#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