Freigeben über


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

Die #ifdef Direktiven und #ifndef Präprozessoren haben die gleiche Wirkung wie die #if Direktive, wenn sie mit dem defined Operator verwendet wird.

Syntax

#ifdef identifier
#ifndef identifier

Diese Direktiven entsprechen folgendem:

#if defined identifier
#if !defined identifier

Hinweise

Sie können die #ifdef Direktiven #ifndef überall #if verwenden. Die #ifdef identifier Anweisung entspricht dem Zeitpunkt, an #if 1 dem identifier sie definiert wurde. Es entspricht #if 0 dem, wann identifier er 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 Direktive verwendet wird, wird bevorzugt.

Die #ifndef Richtlinie prüft auf das Gegenteil der von #ifdef. Wenn der Bezeichner nicht definiert wurde oder seine Definition mit #undefentfernt wurde, ist die Bedingung wahr (nonzero). Andernfalls ist die Bedingung "false" (0).

Microsoft-spezifisch

Der Bezeichner kann über die Befehlszeile mithilfe der /D Option übergeben werden. Bis zu 30 Makros können mit /D.

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