#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 #undef
entfernt 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