Можно ли определить глобальные переменные в функции и использовать переменную в другой функции, используя директивы препроцессора в C ?

#c 11

#c 11

Вопрос:

Я пытаюсь понять директивы препроцессора (например, #if , #ifdef, #ifndef), и ниже приведен код, который я опробовал.

Main_class.cpp
Оберните файл.h
Вывод

Примечание: Функции-члены дополнительно упаковываются и используются в python, и, следовательно, результаты показывают вызовы, подобные python, но это не влияет ни на один процесс c .

Вопрос: 1. Насколько я понимаю, глобальные переменные имеют область действия всего файла с момента его объявления. Тогда в этом случае, почему определенное значение не принимается внутри другой функции?

Требование: я хочу сделать что-то вроде упомянутого ниже:

 void Somefunc(int val){
 set variable x;
}
  

Основываясь на значении x, я хочу включить функции. Теперь условие:
Если x = 1, следует компилировать только некоторые функции, поскольку другие используют заголовки, которые будут вызывать ошибки в используемом мной компиляторе.

Заранее спасибо!

Ответ №1:

Предварительная обработка выполняется перед компиляцией. Он обрабатывает исходный код как обычный текст, его не интересует семантика языка C .

Причина var , по которой это не определено, заключается в том, что определение препроцессора действительно с точки определения до конца файла (предварительно обработанной единицы перевода) или соответствующего #undef .

Комментарии:

1. Спасибо, что прояснили это @krisz ! Если это так, я добавляю свои требования в деталях, которые, как я думал, можно было бы выполнить с использованием глобальных переменных.