【发布时间】:2011-04-16 16:46:46
【问题描述】:
我有一个要调试的可视化 C++ 项目。但是,实际上有几个函数是通过宏扩展生成的(例如特定属性的 set##Name)。因此,在调试时,我无法遵循这些生成函数中的执行流程。
我必须使用 /P 标志然后调试预处理代码吗?
【问题讨论】:
标签: visual-studio visual-c++ preprocessor
我有一个要调试的可视化 C++ 项目。但是,实际上有几个函数是通过宏扩展生成的(例如特定属性的 set##Name)。因此,在调试时,我无法遵循这些生成函数中的执行流程。
我必须使用 /P 标志然后调试预处理代码吗?
【问题讨论】:
标签: visual-studio visual-c++ preprocessor
您必须在其他项目中使用/P 标志预处理代码(或在命令行上,如果您想拼出所有包含和库文件夹),然后编译此预处理代码而不是源代码在您的实际项目中创建文件。然后你可以通过它进行调试。
也就是说,一旦你使用它,你就不能消除宏吗?使用const、inline 和模板,我很少觉得需要求助于宏,如果我这样做了,它通常是非常小的、孤立的代码片段。这些要么太琐碎以至于需要调试,要么我手动将宏的一个实例替换为它生成的代码并对其进行调试。 (然而,这在过去十年中可能发生在我身上三次。)
【讨论】: