【问题标题】:C/C++ Compiler listing what's definedC/C++ 编译器列出定义的内容
【发布时间】:2011-04-28 22:42:06
【问题描述】:

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

有没有办法,可能只有某些编译器,让 C/C++ 编译器转储它当前使用的定义?

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

【问题讨论】:

  • 吹毛求疵:那是预处理器功能。
  • 如何看到预处理器的输出不符合您的要求?
  • 因为当今大多数编译器的 ISTM 都在其中包含预处理器。我多年没有使用 C++,但我不记得自己手动运行过预处理器。

标签: c-preprocessor


【解决方案1】:

是的。在海合会

g++ -E -dM <file>

我敢打赌,几乎所有编译器都有可能。

【讨论】:

  • 我没有在任何编译器中偶然发现该功能。 gcc 拥有它,这让我印象深刻。
【解决方案2】:

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

clang preprocessor 有点相似。它基本上也是一个恰好包含命令行驱动程序的库。预处理器定义了一个macro_iterator 类型和该类型的macro_begin/macro_end,它可以让你遍历预处理器符号表并用它做几乎任何你想做的事情(当然包括打印出符号)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2015-05-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多