有没有办法在 VisualStudio 中调试预处理代码

发布于 2024-09-24 10:34:38 字数 130 浏览 3 评论 0原文

我有一个想要调试的 Visual C++ 项目。然而,有几个函数实际上是通过宏扩展生成的(例如特定属性的 set##Name)。因此,在调试时我无法遵循这些生成的函数内的执行流程。

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

I've a visual C++ project I'd like to debug. However, several functions are actually generated by macro expansion ( like set##Name for a particular property). So, while debugging I can't follow the execution flow inside these generated functions.

Do I have to use the /P flag and then debug the preprocessed code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耶耶耶 2024-10-01 10:34:38

您必须在其他项目中使用 /P 标志(或者在命令行上,如果您想拼写出所有包含和库文件夹),然后编译此预处理代码实际项目中的源文件。然后就可以通过它进行调试了。

也就是说,一旦你做到了,你就不能消除宏吗?对于 const、inline 和模板,我很少觉得需要求助于宏,即使这样做,也通常是非常小的、孤立的代码片段。这些要么太微不足道,不需要调试,要么我手动用它生成的代码替换宏的一个实例并调试它。 (然而,在过去的十年里,这种情况可能发生在我身上三次。)

You would have to preprocess the code using the /P flag in some other project (or on the command line, if you fancy spelling out all the include and library folders), and then compile this preprocessed code instead of the source file in your real project. Then you can debug through it.

That said, once you're at it, can't you eliminate the macros? With const, inline, and templates, I rarely ever feel the need to resort to macros, and if I do, it's usually very small, isolated pieces of code. These are either too trivial to need debugging, or I manually replace one instance of the macro with the code it generates and debug that. (However, this might have happened to me thrice in the last decade.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文