#ifdef
direttive e #ifndef
(C/C++)
Le #ifdef
direttive del preprocessore e #ifndef
hanno lo stesso effetto della #if
direttiva quando viene usata con l'operatore defined
.
Sintassi
#ifdef
identifier
#ifndef
identifier
Queste direttive sono equivalenti a:
#if defined
identifier
#if !defined
identifier
Osservazioni:
È possibile usare le #ifdef
direttive e #ifndef
ovunque #if
sia possibile usare. L'istruzione #ifdef
identifier
equivale a #if 1
quando identifier
è stata definita. Equivale a #if 0
quando identifier
non è stato definito o non è stato definito dalla #undef
direttiva . Queste direttive controllano solo la presenza o l'assenza di identificatori definiti con #define
, non di identificatori dichiarati nel codice sorgente in C o C++.
Queste direttive sono fornite solo per compatibilità con le versioni precedenti del linguaggio. L'espressione defined(
)
identifier
costante utilizzata con la #if
direttiva è preferibile.
La #ifndef
direttiva controlla l'opposto della condizione controllata da #ifdef
. Se l'identificatore non è stato definito o se la relativa definizione è stata rimossa con #undef
, la condizione è true (diverso da zero). In caso contrario, la condizione è false (0).
Sezione specifica Microsoft
L'identificatore può essere passato dalla riga di comando usando l'opzione /D
. È possibile specificare fino a 30 macro con /D
.
La #ifdef
direttiva è utile per verificare se esiste una definizione, perché è possibile passare una definizione dalla riga di comando. Ad esempio:
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
Fine sezione specifica Microsoft