El preprocesador C

 

 

 

Cómo utilizar el preprocesador C

El preprocesador es una herramienta que nos ayuda mucho a la hora de programar con C. Es parte del Estándar C, al igual que el lenguaje, el compilador y la biblioteca estándar.

 

Analiza nuestro programa y se asegura de que el compilador obtenga todo lo que necesita antes de continuar con el proceso.

¿Qué hace en la práctica?

Por ejemplo, busca todos los archivos de encabezado que incluye con la #includedirectiva.

También analiza cada constante definida #definey la sustituye por su valor real.

Esto es solo el comienzo. Mencioné esas dos operaciones porque son las más comunes. El preprocesador puede hacer mucho más.

¿Te diste cuenta #includede que #definehay un #al principio? Eso es común a todas las directivas del preprocesador. Si una línea comienza con #, el preprocesador se encarga de eso.

Condicionales

Una de las cosas que podemos hacer es usar condicionales para cambiar cómo se compilará nuestro programa, dependiendo del valor de una expresión.

Por ejemplo podemos comprobar si la DEBUGconstante es 0:

#include stdio.hconst int DEBUG = 0;int main(void) {#if DEBUG == 0 printf("I am NOT debuggingn");#else printf("I am debuggingn");#endif}

Constantes simbólicas

Podemos definir una constante simbólica :

#define VALUE 1#define PI 3.14#define NAME "Flavio"

Cuando usamos NOMBRE o PI o VALOR en nuestro programa, el preprocesador reemplaza su nombre con el valor, antes de ejecutar el programa.

Las constantes simbólicas son muy útiles porque podemos dar nombres a los valores sin crear variables en el momento de la compilación.

Macros

Con #definetambién podemos definir una macro . La diferencia entre una macro y una constante simbólica es que una macro puede aceptar un argumento y normalmente contiene código, mientras que una constante simbólica es un valor:

#define POWER(x) ((x) * (x))

Tenga en cuenta los paréntesis alrededor de los argumentos, una buena práctica para evitar problemas cuando se reemplaza la macro en el proceso de precompilación.

Luego podemos usarlo en nuestro código de esta manera:

printf("%un", POWER(4)); //16

La gran diferencia con las funciones es que las macros no especifican el tipo de sus argumentos o valores de retorno, lo que puede resultar útil en algunos casos.

Si se define

Podemos comprobar si una constante simbólica o una macro está definida usando #ifdef:

#include stdio.h#define VALUE 1int main(void) {#ifdef VALUE printf("Value is definedn");#else printf("Value is not definedn");#endif}

También tenemos #ifndefque comprobar lo contrario (macro no definida).

También podemos utilizar #if definedy #if !definedpara realizar la misma tarea.

Es común envolver algún bloque de código en un bloque como este:

#if 0#endif

para evitar temporalmente su ejecución o para utilizar una constante simbólica DEBUG:

#define DEBUG 0#if DEBUG //code only sent to the compiler //if DEBUG is not 0#endif

Constantes simbólicas predefinidas que puedes utilizar

El preprocesador también define una serie de constantes simbólicas que puedes utilizar, identificadas por los 2 guiones bajos antes y después del nombre, que incluyen:

  • __LINE__se traduce a la línea actual en el archivo de código fuente
  • __FILE__se traduce al nombre del archivo
  • __DATE__se traduce a la fecha de compilación, en el Mmm gg aaaaformato
  • __TIME__se traduce al tiempo de compilación, en el hh:mm:ssformato

Tips C




Tal vez te puede interesar:

  1. Introducción a React
  2. Agregar evento de clic a los elementos DOM devueltos desde querySelectorAll
  3. Cómo cambiar el valor de un nodo DOM
  4. Cómo comprobar si un elemento DOM tiene una clase

El preprocesador C

CondicionalesConstantes simbólicasMacrosSi se defineConstantes simbólicas predefinidas que puedes utilizar

programar

es

2025-01-06

 

Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente

 

 

Update cookies preferences