Compartir a través de


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

Consulte también

Directivas de preprocesador