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 #include
directiva.
También analiza cada constante definida #define
y 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 #include
de que #define
hay 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 DEBUG
constante 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 #define
tambié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 #ifndef
que comprobar lo contrario (macro no definida).
También podemos utilizar #if defined
y #if !defined
para 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 elMmm gg aaaa
formato__TIME__
se traduce al tiempo de compilación, en elhh:mm:ss
formato
Tips C
Tal vez te puede interesar:
- Introducción a React
- Agregar evento de clic a los elementos DOM devueltos desde querySelectorAll
- Cómo cambiar el valor de un nodo DOM
- 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