Ответ 1
Да, мы можем. Оператор #endif
соответствует предыдущим #if
#ifdef
или #ifndef
и т.д., Для которых не было соответствующего #endif
.
например.
#if ----------|
#if -----| |
#endif ---| |
#endif --------|
У меня вопрос о предпроцессорных директивах в С++:
Например:
#ifndef QUESTION
//some code here
#ifndef QUESTION
//some code here
#endif
#endif
Можем ли мы использовать его таким образом и может ли компилятор С++ соответствовать ifndef
и endif
правильным образом?
Да, мы можем. Оператор #endif
соответствует предыдущим #if
#ifdef
или #ifndef
и т.д., Для которых не было соответствующего #endif
.
например.
#if ----------|
#if -----| |
#endif ---| |
#endif --------|
Да, вы можете вложить блоки #if
/#endif
. Некоторые стили C-стиля подскажут вам написать
#ifdef CONDITION1
# ifdef CONDITION2
# endif
#endif
используя пробелы для обозначения уровня вложенности.
В вашем коде раздел #ifndef QUESTION будет отброшен, если вы не #UNef QUESTION.
Удачи!