La directiva de preprocesador #define
se
puede usar para crear banderas en tiempo de compilación. Tiene
dos opciones: puede simplemente indicar al preprocesador que la
bandera está definida, sin especificar un valor:
#define FLAG
o puede darle un valor (que es la manera habitual en C para definir una constante):
#define PI 3.14159
En cualquier caso, ahora el preprocesador puede comprobar si la etiqueta ha sido definida:
#ifdef FLAG
Esto producirá un resultado verdadero, y el código que sigue
al #ifdef
se incluirá en el paquete que se envía al
compilador. Esta inclusión acaba cuando el preprocesador
encuentra la sentencia:
#endif
o
#endif // FLAG
Cualquier cosa después de #endif
en la misma
línea que no sea un comentario es ilegal, incluso aunque
algunos compiladores lo acepten. Los pares
#ifdef
/#endif
se pueden
anidar.
El complementario de #define
es #undef
(abreviación de «un-define» que hará que una
sentencia #ifdef
que use la misma variable produzca
un resultado falso. #undef
también causará que el
preprocesador deje de usar una macro. El complementario de
#ifdef
es #ifndef
, que producirá verdadero
si la etiqueta no ha sido definida (éste es el que usaremos en
los ficheros de cabecera).
Hay otras características útiles en el preprocesador de C. Consulte la documentación de su preprocesador para ver todas ellas.