首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#undef C++的范围

#undef C++的范围
EN

Stack Overflow用户
提问于 2010-11-01 18:06:38
回答 2查看 3.3K关注 0票数 4

我有一个关于使用#undef重定义宏的问题。

我有一个定义文件,其中包含许多# global.h -d宏。在使用这些宏的代码中,我发现宏包含的值不够通用。我想重新定义宏,使它们更通用。为此,我编写了以下代码片段:

代码语言:javascript
复制
 std::cout << endl << "Enter pitch threshold:" << endl;  
 std::cin >> pitchT;  
 #ifdef PitchThreshold  
  #undef PitchThreshold  
  #define PitchThreshold pitchT   
  #endif  

我的问题是:

以这种方式使用#undef是否确保在所有源文件中重新定义宏,或者它是编写上述代码行的函数的本地宏吗?#undef和#define运算符的作用域是什么?

我可以做什么(除了改变文件中的宏,它们本身是#define-d ),以确保宏定义在所有源文件中都被更改?

谢谢,

Sriram

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-01 18:10:42

#ifdef是一个预处理器指令,这意味着它将在编译源代码之前应用。这意味着只有“下面”的源代码会受到影响。如果您通过预处理器运行源代码,您将能够看到结果。这将使您对预处理器的工作方式有更深入的了解。

票数 10
EN

Stack Overflow用户

发布于 2010-11-01 18:11:15

undef运算符的作用域是调用后的整个文件。这包括包含它的所有文件(因为预处理器只是将文件链接在一起)。因为它是预处理器的一部分,所以它没有像作用域这样奇怪的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4067967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档