【问题标题】:How to expand macros only as a preprocessing step to a C++ file如何仅将宏扩展为 C++ 文件的预处理步骤
【发布时间】:2016-01-29 07:55:53
【问题描述】:

我希望仅在我的 C++ 代码中扩展宏。 我知道 -E 选项仅运行预处理器,但我不是在寻找完整的预处理输出。我想要的只是一个扩展了所有宏的 C++ 代码。

我需要将此代码提交给不懂宏的分析器。但是预处理代码会破坏目的,因为它会在代码中添加大量第三方代码(通过包含文件)。

【问题讨论】:

  • 为什么不能使用-E 开关?或使用cpp src_file
  • 我遇到了同样的问题,但从未找到解决方案,现在我将宏的大部分工作委托给外部工具 (Cmake),这样我就有了不需要扩展的最小宏调试。你最好的选择是拥有包含文件非常少的代码(例如使用 Pimpl idiom 或纯虚拟类大大减少了包含的数量)。我认为如果您将鼠标放在某些 IDES 上,它只会显示扩展宏
  • @cad 这将剥离 cmets 并评估所有 #include#if 指令。
  • 你也需要保留#ifdefs吗?

标签: c++ macros c-preprocessor


【解决方案1】:

如果您只想要宏扩展并跳过 #include 处理,这可能会有所帮助:https://github.com/ned14/pcpp/pull/34

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-04
    • 2020-09-18
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    相关资源
    最近更新 更多