Direttive #ifdef e #ifndef
Direttive del preprocessore che determinano se è definita una costante o una macro del preprocessore specifico.
#ifdef identificatore ... |
---|
#endif |
identificatore #ifndef ... |
#endif |
Parametri
Elemento | Descrizione |
---|---|
Identificatore |
Identificatore della costante o della macro da controllare. |
Commenti
È possibile usare le direttive #ifdef e #ifndef in qualsiasi punto in cui è possibile usare il #if . L'istruzione #ifdef equivale a ) direttiva . Queste direttive controllano solo la presenza o l'assenza di identificatori definiti usando la direttiva #define , non per gli identificatori dichiarati nel codice sorgente C o C++.
Queste direttive sono fornite solo per compatibilità con le versioni precedenti del linguaggio. È preferibile usare l'operatore definito con la direttiva #if.
La direttiva #ifndef controlla l'opposto della condizione controllata da #ifdef. Se l'identificatore non è definito, la condizione è true (diverso da zero); in caso contrario, la condizione è false (zero).
Esempio
L'identifier può essere passato dalla riga di comando utilizzando l'opzione /D. È possibile specificare fino a 30 macro utilizzando /D. Ciò è utile per controllare l'esistenza di una definizione poiché una definizione può essere passata dalla riga di comando. Nell'esempio seguente viene usato questo comportamento per determinare se eseguire un'applicazione in modalità test.
// PROG.CPP
#ifndef test
#define final
#endif
int main()
{
}
Quando viene compilato usando il comando seguente, prog.cpp compilerà in modalità test; in caso contrario, verrà compilato in modalità finale.
CL.EXE /Dtest prog.cpp