题
,点击
我有一个关于使用#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操作者的范围是整个文件,它被称为后。这包括包括它(因为预处理只是将文件链在一起。),因为它是预处理器的一部分,它没有奇怪的事情像范围内的所有文件。
不隶属于 StackOverflow