【发布时间】:2015-09-18 10:27:17
【问题描述】:
在调试我的代码时,我经常想知道#define'd 常量的值。但是调试器似乎不知道它们的值。这意味着我必须四处寻找包含路径等才能找到#define 行。有什么技巧可以让这更容易吗?
更新:我不得不将绿色勾号授予 Tony D,因为他对标题问题的详细回答,但我也赞成使用 const 而不是 #define(我还测试了enum 也可以)。最后,使用 F12 找到原来的#define 行是另一个好主意。
【问题讨论】:
-
在一般情况下可能不是因为预处理定义的结果字符串不一定是可分配的值。
-
为你的编译器寻找等效的
gcc -E。 -
一些编译器会(可选地)在最终的可执行文件中包含宏定义,特别是为了帮助调试器。但是,如果您的编译器没有,那将无济于事。
-
因为没有“#define'd 常量”之类的东西。所有以
#开头的行都被预处理器解释和删除。像#define PI 3.14159这样的简单#defines 告诉预处理器用3.14159替换任何出现的PI,这就是它的作用。带有参数的#defines 以类似的方式工作(它们的用法被替换为使用它们的参数的表达式)。编译器和编译链的其余部分看不到它们,因为它们在预处理后不再存在(这是编译过程的第一步)。 -
考虑到 #define 宏可以变得多么复杂,我很惊讶没有更多的功能需要帮助调试它们。
标签: c++ debugging visual-studio-2015