#ifdef - und #ifndef -Direktiven (C/C++)

Die #ifdef Präprozessordirektiven und #ifndef haben die gleiche Auswirkung wie die #if -Direktive, wenn sie mit dem defined -Operator verwendet wird.

Syntax

#ifdef identifier
#ifndef identifier

Diese Direktiven entsprechen:

#if defined identifier
#if !defined identifier

Hinweise

Sie können die #ifdef -Direktiven und #ifndef überall dort verwenden, wo #if sie verwendet werden können. Die #ifdefidentifier -Anweisung entspricht #if 1 , wenn identifier definiert wurde. Dies entspricht #if 0 , wenn identifier nicht definiert wurde oder von der #undef -Direktive nicht definiert wurde. Diese Anweisungen überprüfen lediglich, ob die mit #define definierten Bezeichner vorhanden sind, und nicht, ob Bezeichner vorhanden sind, die im C- oder C++-Quellcode deklariert werden.

Diese Anweisungen werden nur bereitgestellt, um die Kompatibilität mit früheren Versionen der Sprache zu gewährleisten. Der defined(identifier) konstante Ausdruck, der mit der #if -Anweisung verwendet wird, wird bevorzugt.

Die #ifndef -Direktive überprüft das Gegenteil der Bedingung, die von überprüft wird #ifdef. Wenn der Bezeichner nicht definiert wurde oder seine Definition mit #undefentfernt wurde, ist die Bedingung true (ungleich null). Andernfalls ist die Bedingung "false" (0).

Microsoft-spezifisch

Der Bezeichner kann über die Befehlszeile mithilfe der /D Option übergeben werden. Mit können bis zu 30 Makros angegeben /Dwerden.

Die #ifdef -Direktive ist nützlich, um zu überprüfen, ob eine Definition vorhanden ist, da eine Definition über die Befehlszeile übergeben werden kann. Zum Beispiel:

// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif

Ende Microsoft-spezifisch

Siehe auch

Präprozessoranweisungen