C / C ++编译器列出了已定义的内容

时间:2011-04-28 22:42:07

标签: c-preprocessor

这个问题:Is there a way to tell whether code is now being compiled as part of a PCH?引导我思考这个问题。

是否有一种方法,可能只是某些编译器,让C / C ++编译器转储出它当前使用的定义?

编辑:我知道这在技术上是一个预处理器问题,但让我们在术语编译器中添加它。

2 个答案:

答案 0 :(得分:1)

是。在GCC

g++ -E -dM <file>

我敢打赌几乎所有的编译器都可以。

答案 1 :(得分:1)

Boost Wave(恰好包含命令行驱动程序的预处理程序库)包含tracing capability跟踪宏扩展。它可能比你要求的要多一点 - 它不仅仅显示最终结果,而且基本上是扩展宏(甚至是非常复杂的宏)的每一步。

clang preprocessor有点类似。它基本上也是一个恰好包含命令行驱动程序的库。预处理器定义了该类型的macro_iterator类型和macro_begin / macro_end,它将让您遍历预处理器符号表,并随意执行任何操作(包括打印符号) ,当然)。