2010-09-24 118 views
1

我有一个我想调试的Visual C++项目。但是,几个函数实际上是由宏扩展生成的(例如为特定属性设置## Name)。所以,在调试的时候,我无法追踪这些生成函数内部的执行流程。有没有办法在VisualStudio中调试预处理代码

我必须使用/ P标志,然后调试预处理的代码吗?

回答

2

您将不得不在一些其他项目中(或在命令行上,如果您想拼出所有包含和库文件夹)使用/P标志预处理代码,然后编译此预处理代码而不是源文件在你的真实项目中。然后你可以通过它进行调试。

这就是说,一旦你在它,你不能消除宏?使用const,inline和模板,我很少感觉需要使用宏,如果我这样做,它通常是非常小的,孤立的代码段。这些要么太琐碎以至于不需要调试,要么手动将它的一个实例替换为它生成的代码并进行调试。 (但是,这可能在过去的十年中发生过三次)​​。

+0

好吧,我要试试这个选项。我不想,但似乎我没有选择。我无法消除宏,我可以访问代码,但我没有修改它的凭据。 – LB40 2010-09-27 07:05:10

+0

内联如何删除对宏的需求?例如,我一直在寻找log4cxx中的宏,这些宏会生成几行样板代码。你如何用const,inline或templates替换宏的一行代码的效率? – 2013-07-31 17:58:46

相关问题