Yak*_*kov 6 c++ visual-studio-2010 c-preprocessor
在.cpp文件中我使用了一个宏mmData1.我在项目中搜索并看到这个宏是在几个文件中定义的.(即有几个.h文件有行#define mmData1)
我想知道VS10中是否有能力检查预处理器从哪个文件获取宏值
如果 Intellisense 不知道,则没有直接的方法。然而,还有一些间接的方法。假设你的宏名称是SOME_MACRO
#define SOME_MACRO每次put实例之后#error Defined here,右键单击源文件并选择Compile。如果编译器返回错误,请删除引发错误的指令并再次编译。此错误的最后一个实例将尾随源中可见的定义。
让每个指令定义SOME_MACRO将其定义为其他内容,然后在源文件中,在所有包含之后添加以下行:
#define STRINGIZE(x) STRINGIZE2(x)
#define STRINGIZE2(x) #x
#pragma message("SOME_MACRO is expanded as: " STRINGIZE(SOME_MACRO))
Run Code Online (Sandbox Code Playgroud)
编译源文件;您应该在构建日志中看到该值。
侵入性较小的方式:将这些行放在每个后面#define SOME_MACRO
#pragma push_macro("STRINGIZE")
#pragma push_macro("STRINGIZE2")
#define STRINGIZE(x) STRINGIZE2(x)
#define STRINGIZE2(x) #x
#pragma message("Defining at " __FILE__ ":" STRINGIZE(__LINE__))
#pragma pop_macro("STRINGIZE")
#pragma pop_macro("STRINGIZE2")
Run Code Online (Sandbox Code Playgroud)
或者,如果您不需要行号:
#pragma message("Defining at " __FILE__)
Run Code Online (Sandbox Code Playgroud)
编译文件。查看构建日志,您应该能够说出SOME_MACRO定义的顺序。
| 归档时间: |
|
| 查看次数: |
2180 次 |
| 最近记录: |