Freigeben über


#ifdef- und #ifndef-Anweisungen

Präprozessordirektiven, die bestimmen, ob eine bestimmte Präprozessorkonstante oder ein bestimmtes Makro definiert ist.

#ifdef Bezeichner ...
#endif
#ifndef Bezeichner ...
#endif

Parameter

Element BESCHREIBUNG
Bezeichner
Bezeichner der zu überprüfenden Konstanten oder Makros.

Bemerkungen

Sie können die #ifdef- und #ifndef-Direktiven überall verwenden, wo die #if verwendet werden kann. Die #ifdef-Anweisung entspricht der Direktive . Diese Anweisungen überprüfen nur das Vorhandensein oder Fehlen von Bezeichnern, die mithilfe der #define-Direktive definiert wurden, nicht nach Bezeichnern, die im C- oder C++-Quellcode deklariert wurden.

Diese Anweisungen werden nur bereitgestellt, um die Kompatibilität mit früheren Versionen der Sprache zu gewährleisten. Die Verwendung des definierten Operators mit der #if-Direktive wird bevorzugt.

Die #ifndef-Anweisung überprüft das Gegenteil der durch #ifdef geprüften Bedingung. Wenn der Bezeichner nicht definiert ist, ist die Bedingung true (nonzero); andernfalls ist die Bedingung false (null).

Beispiele

Der Bezeichner kann von der Befehlszeile mithilfe der Option /D- übergeben werden. Bis zu 30 Makros können mit /D angegeben werden. Dies ist hilfreich, wenn überprüft werden soll, ob eine Definition vorhanden ist, da diese von der Befehlszeile übergeben werden kann. Im folgenden Beispiel wird dieses Verhalten verwendet, um zu bestimmen, ob eine Anwendung im Testmodus ausgeführt werden soll.

// PROG.CPP
#ifndef test
  #define final
#endif
int main()
{
}

Bei der Kompilierung mit dem folgenden Befehl wird prog.cpp im Testmodus kompiliert; andernfalls kompiliert es im enden Modus.

CL.EXE /Dtest prog.cpp

Siehe auch

Präprozessordirektiven (DirectX HLSL)

#if, )