#c 11
#c 11
Вопрос:
Я пытаюсь понять директивы препроцессора (например, #if , #ifdef, #ifndef), и ниже приведен код, который я опробовал.
Примечание: Функции-члены дополнительно упаковываются и используются в python, и, следовательно, результаты показывают вызовы, подобные python, но это не влияет ни на один процесс c .
Вопрос: 1. Насколько я понимаю, глобальные переменные имеют область действия всего файла с момента его объявления. Тогда в этом случае, почему определенное значение не принимается внутри другой функции?
Требование: я хочу сделать что-то вроде упомянутого ниже:
void Somefunc(int val){
set variable x;
}
Основываясь на значении x, я хочу включить функции. Теперь условие:
Если x = 1, следует компилировать только некоторые функции, поскольку другие используют заголовки, которые будут вызывать ошибки в используемом мной компиляторе.
Заранее спасибо!
Ответ №1:
Предварительная обработка выполняется перед компиляцией. Он обрабатывает исходный код как обычный текст, его не интересует семантика языка C .
Причина var
, по которой это не определено, заключается в том, что определение препроцессора действительно с точки определения до конца файла (предварительно обработанной единицы перевода) или соответствующего #undef
.
Комментарии:
1. Спасибо, что прояснили это @krisz ! Если это так, я добавляю свои требования в деталях, которые, как я думал, можно было бы выполнить с использованием глобальных переменных.