martes 15 de septiembre de 2009

Ver identificadores de nuestro procesador, desde la línea de comandos.

¿Que son los identificadores de Procesador?

Los identificadores de procesador son constantes definidas, dependiendo de nuestra maquina. Estas constantes nos sirven para identificar facilmente en programacion el SO, la arquitectura del ordenador, o cosas tan simples como la version 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:

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.


#include <stdio.h>
#ifdef __unix__
#define LIMPIA "clear"
#endif
#ifdef __WIN32__
#define LIMPIA "cls"
#endif

int main(void)
{
printf("texto que sera limpiado\n");
system(LIMPIA);
printf("\nlimpio\n");
return 0;
}
#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 screens, para que vean esto en acción

En Linux




En Windows



Links Interesantes:

- Procesador de C
- Directivas del procesador en la MSDN

3 comentarios:

  1. Muy bueno brota! no sabía nada de esto =)

    ResponderSuprimir
  2. Gracias por comentar bro!,

    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 :) .

    PD: 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.

    PD2: Gracias por comentar Sh4v :), y espero que pronto este terminada la web :D.

    Saludos.

    ResponderSuprimir
  3. Mish.. interesante...
    Esta bueno para quienes programan a bajo nivel asi hacen sus software sean compatibles en varios ambientes.

    ResponderSuprimir