问题
I have a question about Pre-processor directives in c++:
For example:
#ifndef QUESTION
//some code here
#ifndef QUESTION
//some code here
#endif
#endif
Can we use it in this way, and can the C++ compiler match the ifndef
and endif
in the right way?
回答1:
Yes, we can. The #endif
statement matches to the previous #if
#ifdef
or #ifndef
etc for which there hasn't been a corresponding #endif
.
e.g.
#if ----------|
#if -----| |
#endif ---| |
#endif --------|
回答2:
Yes, you can nest #if
/#endif
blocks. Some C coding styles would tell you to write
#ifdef CONDITION1
# ifdef CONDITION2
# endif
#endif
using spaces to denote the level of nesting.
回答3:
In your code, the #ifndef QUESTION section will be discarded unless you #undef QUESTION.
Good luck!
来源:https://stackoverflow.com/questions/38963852/nested-else-handling-in-false-ifdef-in-c