【问题标题】:Recursively remove preprocessor macros递归删除预处理器宏
【发布时间】:2017-05-08 01:46:32
【问题描述】:

我有一个我正在处理的程序的源代码树,它是用混合 C/C++ 代码编写的。出于调试目的,我希望能够在整个树上(递归地)运行像 unifdef 这样的命令行工具,以从所有源文件中删除一组特定的 #ifdef/#endif 宏。

我想知道是否有任何特定的方法可以有效地做到这一点。如有任何帮助,将不胜感激,谢谢。

【问题讨论】:

  • 使用find 命令和-exec 选项对源树中的所有文件执行命令。
  • 没有“混合 C/C++ 代码”。单个源文件只能是 C 或 C++。 c++ 编译器无法编译 C 代码。
  • 不清楚。如果定义了符号,则将编译 #ifdef 指令中的代码。为什么不能只定义(或取消定义)makefile/build 脚本中的符号?
  • @beeselmane 大多数编译器都可以选择将预处理器的输出保存在文件中。所以用那个选项编译你的代码。

标签: c++ c building


【解决方案1】:

我已经使用以下命令解决了这个问题:

find . -name '*.c' -o -name '*.h' -o -name '*.cpp' -o -name '*.hpp' -exec unifdef <macro definitions> -o '{} {} ;'

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2013-11-03
    • 2011-03-15
    • 2015-04-15
    相关资源
    最近更新 更多