код внутри #ifdef включен во время выполнения или во время самой компиляции?

0

Я использую #define ENABLE_FLAG внутри #define ENABLE_FLAG C++ и, соответственно, пытается включить раздел кода, в то время как ENABLE_FLAG определен.

Мой вопрос: конкретный набор кода внутри

#ifdef ENABLE_FLAG
....setofcode....
#endif

оценивается во время выполнения через #ifdef проверки или компилятор сам видит ENABLE_FLAG во время компиляции и включает в себя код?

Теги:

2 ответа

3
Лучший ответ

#ifdef и все те другие вещи, которые вы видите с # как первый символ в строке, - это директивы препроцессора C. Они обрабатываются даже до собственно компиляции. Таким образом, не будет принято решение во время исполнения - блокированный/отключенный блок кода определяется в самой ранней части процесса сборки.

  • 0
    Lol вы оба сделали то же самое из-за #
  • 0
    Да, я никогда раньше не видел эту «особенность» - очевидно, начало строки с # превращает ее в гигантский текст заголовка, даже если после # нет пробела, а сама строка очень длинная. Кто знал.
2

Параметры #define - это время компиляции и сохраняются во время выполнения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню