Directivas #ifdef
y #ifndef
(C/C++)
Las directivas de preprocesador #ifdef
y #ifndef
tienen el mismo efecto que la directiva #if
cuando se usa con el operador defined
.
Sintaxis
#ifdef
identifier
#ifndef
identifier
Estas directivas son equivalentes a:
#if defined
identifier
#if !defined
identifier
Comentarios
Puede usar las directivas #ifdef
y #ifndef
en cualquier lugar donde se pueda utilizar #if
. La #ifdef
identifier
instrucción es equivalente a #if 1
cuando identifier
se ha definido. Es equivalente a #if 0
cuando identifier
no se ha definido o la directiva #undef
no lo ha definido. Estas directivas solo comprueban la presencia o ausencia de identificadores definidos con #define
, no comprueban los identificadores declarados en el código fuente de C o C++.
Estas directivas se proporcionan únicamente por compatibilidad con las versiones anteriores del lenguaje. Se prefiere la defined(
identifier
)
expresión constante que se usa con la #if
directiva .
La directiva #ifndef
comprueba lo contrario de la condición que comprueba #ifdef
. Si el identificador no se ha definido o si su definición se ha quitado con #undef
, la condición es true (distinto de cero). De lo contrario, la condición es false (0).
Específicos de Microsoft
El identificador se puede pasar desde la línea de comandos con la opción /D
. Se pueden especificar hasta 30 macros con /D
.
La directiva #ifdef
es útil para comprobar si existe una definición, porque una definición se puede pasar desde la línea de comandos. Por ejemplo:
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
FIN de Específicos de Microsoft