如何在Visual Studio中扩展VC++宏引用?

19

不必右键单击宏标识符,然后选择“转到定义”,是否可以展开宏引用并查看传递给编译器的代码是什么样子?


1
@HansPassant,你应该真正把它变成一个答案,因为过去三年里,复制/粘贴你的评论已经成为了它的全部,而且有点丑陋。 - anon
这是一个简单的修复,只需将评论标记为“过时”,版主就会将其删除。 - Hans Passant
3个回答

23

项目 + 属性, C/C++, 预处理器, 预处理到文件 = 是. 在构建目录中编译并打开 .i 文件。


您也可以通过右键单击并查看属性来针对单个文件执行此操作。 - Ash McConnell
请注意,这会导致构建失败,但您仍然可以查看.i文件。 - huang
请注意,这将导致构建失败,但您仍然可以看到.i文件。 - undefined

6

在这个话题上,我听到了所有可能的负面回答:

  • 宏只能被展开而不能被评估
  • 预处理器也应该解析包含文件
  • 嵌套宏可能会过于复杂
  • 条件预处理可能会棘手
  • 宏是邪恶的,应该避免使用等等
  • 等等……

它们都是真实的,但是在我的看法里,它们与日常编程的现实相冲突。

事实上,在旧的 C 项目中工作时,宏通常仅被用作函数,这对我来说非常重要。通过 /P 生成所有预处理文件可以实现目标,但代价太大、时间太长。我只需要一个工具,来展开在几行代码中定义的简单宏,甚至是在其他文件中定义的宏。

怎样做呢?

  1. 在 Linux 上,简单地使用 GDB 和他的展开宏功能
  2. 在 Windows 上,我使用 https://www.jetbrains.com/resharper-cpp/ 集成到 Visual Studio 中

所以,在实际情况下,这是可能的。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接