У меня вопрос о директивах препроцессора в c ++:
Например:
#ifndef QUESTION
//some code here
#ifndef QUESTION
//some code here
#endif
#endif
Можем ли мы использовать его таким образом, и может компилятор C ++ соответствовать ifndef
и endif
в правильном направлении?
c++
c-preprocessor
preprocessor-directive
Брайан Томпсетт - 莱恩
источник
источник
#define AAA #define XXX
это не будет работать правильно.Ответы:
Да мы можем. В
#endif
заявлении матчи к предыдущему#if
#ifdef
или#ifndef
т.п. , для которых не была соответствующей#endif
.например
#if ----------| #if -----| | #endif ---| | #endif --------|
источник
Да, можно вкладывать
#if
/#endif
блоки. Некоторые стили кодирования C рекомендуют вам написать#ifdef CONDITION1 # ifdef CONDITION2 # endif #endif
использование пробелов для обозначения уровня вложенности.
источник
#ifdef
#
директивами препроцессора и разрешены пробелы . Большое спасибо за совет!В вашем коде раздел #ifndef QUESTION будет удален, если вы не #undef QUESTION.
Удачи!
источник