Вопрос


У меня есть вопрос об использовании #undef переопределить макросы.
У меня есть файл global.h который содержит ряд # Define-d Macros. В коде, который использует эти макросы, я обнаружил, что значения, которые удерживают макрос, не достаточно общего. Я хочу переопределить макросы, чтобы сделать их более универсальными. Я написал следующий фрагмент кода, чтобы сделать только что:

 std::cout << endl << "Enter pitch threshold:" << endl;  
 std::cin >> pitchT;  
 #ifdef PitchThreshold  
  #undef PitchThreshold  
  #define PitchThreshold pitchT   
  #endif  

Мои вопросы:
Использует #undef таким образом, обеспечивает переопределение макроса во всех исходных файлах, или это локально для функции, где написаны вышеуказанные строки кода? Какова область охвата операторов #undef и #define?
Что я могу сделать (кроме изменения макросов в файле, где они есть # Define-d), чтобы гарантировать, что макроспределения изменяются по всем исходным файлам?
Спасибо,
SRIRAM.

Это было полезно?

Решение

#ifdef Это директива препроцессора, это означает, что он будет применен до того, как ваш исходный код будет скомпилирован. Это означает, что будет затронут только исходный код «ниже». Если вы запустите исходный код через препроцессор, вы сможете увидеть результат. Это даст вам больше понимания в разработке препроцессора.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top