在VS调试器中使用#define:任何悬停和查看值的方法?

Pae*_*ula 5 c debugging visual-studio-2010 c-preprocessor

我正在使用VS2010 编写一个C应用程序.我有以下#define:

#define wRow   Wksp[Session.wkspIndex]->Row
Run Code Online (Sandbox Code Playgroud)

"Row"是一组结构.所以没有定义,它看起来像这样:

Wksp[Session.wkspIndex]->Row[1].value
Run Code Online (Sandbox Code Playgroud)

如果没有定义,我可以将鼠标悬停在"价值"上并查看其价值.但是当我使用define时,就像这样:

wRow[1].value
Run Code Online (Sandbox Code Playgroud)

然后悬停什么也没做,因为(我假设)调试器太懒了,无法进行我定义的扩展.

有没有办法告诉调试器扩展,#define所以我可以看到它的价值?Watch窗口中出现同样的问题:我无法进入wRow...但必须使用Wksp[Session.wkspIndex]->Row....

Éti*_*nne 2

所以基本上你问的是如何获得这个定义的值: 悬停在调试模式而不定义

与获取此变量的值相同的方式: 通过定义悬停在调试模式下

在 Visual Studio 2010 中,您无法像获取变量值那样在调试时获取宏的值。将鼠标悬停在变量上实际上与在监视窗口中输入变量具有相同的效果,并且由于 Visual Studio 调试符号的格式,该监视窗口可以访问的信息受到限制。vRow如果您在监视窗口中输入宏,您将得到:

错误:找不到符号“vRow”

这就是为什么当您将鼠标悬停在 上时不会显示任何内容vRow

要使用 Visual Studio 调试宏值,您可以Preprocess to a fileConfiguration Properties ->C/C++ ->Preprocessor. 然后,下次编译程序时,Visual Studio 将生成一个 .i 文件,它是预处理器的输出。通过打开此 .i 文件,您可以查看宏的实际扩展值,并在调试时在监视窗口中输入该值。