web-dev-qa-db-fra.com

Les directives de pré-processeur #if peuvent-elles être imbriquées en C ++?

J'ai une question sur les directives de pré-processeur en c ++:

Par exemple:

#ifndef QUESTION

//some code here

#ifndef QUESTION

//some code here

#endif

#endif

Pouvons-nous l'utiliser de cette manière, et le compilateur C++ peut-il faire correspondre les ifndef et endif de la bonne manière?

75
user707549

Oui nous pouvons. Le #endif l'instruction correspond à la précédente #if#ifdef ou #ifndef etc pour lequel il n'y a pas eu de correspondant #endif.

par exemple.

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

Oui, vous pouvez imbriquer #if/#endif blocs. Certains styles de codage C vous diraient d'écrire

#ifdef CONDITION1
# ifdef CONDITION2
# endif
#endif

en utilisant des espaces pour indiquer le niveau d'imbrication.

43
Fred Foo

Dans votre code, la section #ifndef QUESTION sera supprimée sauf si vous #undef QUESTION.

Bonne chance!

0
bert-jan