Freigeben über


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

Die #ifdef und der #ifndef-Direktive übergeben die gleiche Funktion wie die #if-Direktive fehl, wenn sie mit Definition( ID ) verwendet wird.

#ifdef identifier
#ifndef identifier

// equivalent to
#if defined identifier
#if !defined identifier

Hinweise

Sie können #ifdef verwenden und der #ifndef-Direktive #if überall verwendet werden können.Die #ifdef Bezeichner der Anweisung ist mit#if 1äquivalent, wenn Bezeichner definiert wurde, und steht für#if 0äquivalent, wenn Bezeichner nicht definiert wurde oder #undef-Direktive mit den nicht definiert wurde.Diese Direktive überprüfen nur für die Anwesenheit oder Abwesenheit von Bezeichnern, die mit #define, nicht für die Bezeichner definiert werden, die in C# oder C++-Quellcode deklariert werden.

Diese Direktive wird nur bereitgestellt, um die Kompatibilität mit früheren Versionen der Sprache bereitgestellt.Der (definiert Bezeichner)-konstante Ausdruck, der den #if-Direktive verwendet wird, ist vorzuziehen.

Die der #ifndef-Direktive auf die Umkehrung der Bedingung geüberprüft von #ifdef.Wenn der Bezeichner nicht (oder dessen Definition ist mit #undefentfernt) definiert wurde, ist die Bedingung erfüllt (Wert ungleich 0 (null).Andernfalls ist die Bedingung false (0).

Microsoft-spezifisch

Der Bezeichner kann von der Befehlszeile mit der Option /D- übergeben werden.Maximal 30 Makros können mit /D angegeben werden.

Dies ist hilfreich zum Prüfen, ob eine Definition vorhanden ist, da eine Definition in der Befehlszeile übergeben werden kann.Beispiele:

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

Microsoft ENDES bestimmten

Siehe auch

Referenz

Präprozessordirektiven