,点击 我有一个关于使用#undef重新定义宏的问题。结果 我有一个包含一些#的定义-d宏的文件global.h。在使用这些宏的代码,我发现了宏保存的值不是通用的不够。我想重新定义宏,使其更加通用。我写了下面的代码片段来做到这一点:

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

我的问题是:点击 使用和#undef以这种方式是否确保所有源文件宏的重新定义,或者是本地到上面的代码行编写的功能?什么是和#undef和运营商的#define的范围?结果 我能做些什么(除了他们在哪里#更改文件中的宏定义-d本身),以确保宏定义在所有源文件改变了吗?点击 谢谢你,结果 斯利拉姆

有帮助吗?

解决方案

#ifdef是一个预处理程序指令,该源代码被编译之前它将应用于此的装置。这意味着,只有“自下而上”的源代码将受到影响。如果通过预处理程序运行你的源代码,你就可以看到结果。这将让您更深入的预处理器的工作。

其他提示

和#undef操作者的范围是整个文件,它被称为后。这包括包括它(因为预处理只是将文件链在一起。),因为它是预处理器的一部分,它没有奇怪的事情像范围内的所有文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top