Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[C] Ver identificadores de nuestro procesador, desde la línea de comandos

  • 1 Respuestas
  • 4638 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jhonjhon_123

  • *
  • Underc0der
  • Mensajes: 150
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Jhonjhon_123's Software In Developed
« en: Febrero 23, 2010, 05:54:00 pm »
¿Que son los identificadores de Procesador?

Los identificadores de procesador son constantes definidas, dependiendo de nuestra maquina. Estas constantes nos sirven para identificar fácilmente en programación el SO, la arquitectura del ordenador, o cosas tan simples como la versión de nuestro SO, el tamaño de algunos tipos de datos en nuestra maquina, entre otros.


¿Cómo puedo saber los identificadores de procesador en mi maquina?

Desde una shell tipeamos:

Código: [Seleccionar]
cpp -dM FICHERO_VACÍO

Por ejemplo, la salida en mi maquina es:



¿Pero, y toda esa información, para que nos sirve?

Daré un ejemplo muy sencillo, pero muy útil, mas de alguno de ustedes (quienes programan) sabran que el uso de la función system no se recomienda por su portabilidad, bueno pues usando los identificadores del procesador nosotros podemos simular la portabilidad de nuestros programas, el como lo veremos mediante un código de ejemplo.


Código: C
  1. #include <stdio.h>
  2.  
  3. #ifdef __unix__
  4.  #define LIMPIA "clear"
  5. #endif
  6. #ifdef __WIN32__
  7.  #define LIMPIA "cls"
  8. #endif
  9.  
  10. int main(void)
  11. {
  12.  printf("texto que sera limpiado\n");
  13.  system(LIMPIA);
  14.  printf("\nlimpio\n");
  15.  return 0;
  16. }
  17.  


#ifdef & #endif

Son dos de las Directivas del procesador del lenguaje C, las que nos sirven para incluir condiciones en tiempo de compilación en nuestros programas.


Es decir: en el caso de este codigo, al momento de compilar:

1º - Se realiza la inclución de la libreria stdio
2º - Se pregunta esta definido __unix__ o __WIN32__ , y dependiendo de este resultado se opta o por definir LIMPIAR como clear o cls, lo que nos resuelve el problema de la compatibilidad entre estos dos SO.

Acá unos screen's, para que vean esto en acción

En Linux






En Windows






Links Interesantes:

- Procesador de C
- Directivas del procesador en la MSDN

PD: Una cita de un coment que hice en mi blog:

Citar
Si nos vamos a la portabilidad en si, esto no es muy útil ya que todo esto es en tiempo de compilación, osea que para que la portabilidad sea efectiva, se debería compilar cada vez que se quiera usar el código.

Pero por ej: en mi caso en la Uni a mi para las tareas solo me piden el codigo y los profes lo compilan y prueban, en esta situación a mi se me hace muy útil :) .

Hago toda esa aclaración, porque me imagino que mas de alguno va a tener ganas de criticarme el que yo usara la palabra portabilidad al tocar este tema, es mas una forma de introducir el concepto.
« Última modificación: Febrero 08, 2014, 05:22:17 pm por Expermicid »

Desconectado K&R

  • *
  • Underc0der
  • Mensajes: 4
  • Actividad:
    0%
  • Reputación 0
  • "Dios, un perfecto Hacker!"
    • Ver Perfil
« Respuesta #1 en: Julio 18, 2018, 03:04:02 pm »
Saludos jhonjhon_123, muy buen aporte, interesante para la potabilidad entre otras utilidades!.

 

¿Te gustó el post? COMPARTILO!



Curso C++ desde Cero

Iniciado por Jhonjhon_123

Respuestas: 3
Vistas: 5052
Último mensaje Julio 29, 2011, 02:20:58 pm
por sebas72