webentwicklung-frage-antwort-db.com.de

Können #wenn Präprozessor-Direktiven in C ++ verschachtelt werden?

Ich habe eine Frage zu Pre-Processor-Direktiven in c ++:

Beispielsweise:

#ifndef QUESTION

//some code here

#ifndef QUESTION

//some code here

#endif

#endif

Können wir es auf diese Weise verwenden und kann der C++ - Compiler die ifndef und endif richtig zuordnen?

75
user707549

Ja wir können. Die Anweisung #endif Stimmt mit der vorherigen Anweisung #if#ifdef Oder #ifndef Usw. überein, für die es kein entsprechendes #endif Gibt.

z.B.

#if  ----------|
#if  -----|    |
#endif ---|    |
#endif --------|
101
Armen Tsirunyan

Ja, Sie können #if/#endif - Blöcke verschachteln. Einige C-Codierungsstile würden Sie zum Schreiben auffordern

#ifdef CONDITION1
# ifdef CONDITION2
# endif
#endif

verwenden von Leerzeichen, um die Verschachtelungsebene anzugeben.

43
Fred Foo

In Ihrem Code wird der Abschnitt #ifndef QUESTION verworfen, sofern Sie nicht #undef QUESTION verwenden.

Viel Glück!

0
bert-jan