#undef C++的范围

Sri*_*ram 4 c++ macros scope undef


我有一个关于使用#undef重新定义宏的问题.
我有一个文件global.h,其中包含许多#define -d宏.在使用这些宏的代码中,我发现宏所持有的值不够通用.我想重新定义宏以使它们更通用.我编写了以下代码片段来做到这一点:

 std::cout << endl << "Enter pitch threshold:" << endl;  
 std::cin >> pitchT;  
 #ifdef PitchThreshold  
  #undef PitchThreshold  
  #define PitchThreshold pitchT   
  #endif  
Run Code Online (Sandbox Code Playgroud)

我的问题是:
以这种方式使用#undef确保在所有源文件中重新定义宏,还是在上面写入代码行的函数的本地?#undef和#define运算符的范围是什么?
我该怎么办(除了更改文件中的#inscate -d本身的宏)以确保在所有源文件中更改宏定义?
谢谢,
Sriram

Seb*_*n M 10

#ifdef是一个预处理程序指令,这意味着它将在编译源代码之前应用.这意味着只有"下方"的源代码才会受到影响.如果您通过预处理器运行源代码,您将能够看到结果.这将使您更好地了解预处理器的工作原理.

  • 您无法在运行时更改宏的值.预处理器只进行文本替换,因此下次在代码中使用`PitchThreshold`时,它将替换为`pitchT`(变量名,而不是其值). (3认同)