Condividi tramite


#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 #ifdefidentifier 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()identifiercostante 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

Vedi anche

Direttive del preprocessore