【发布时间】:2012-01-30 13:11:33
【问题描述】:
我接触了一个用 C 编码的开源项目。它使用#ifdef 进行交叉编译。源代码中有很多 ifdef。我只想为一个平台修改它。我正在考虑通过编译器的预处理器(Visual C++)运行它,但它会将预处理结果写入一个我不需要的文件。任何人都知道一种预处理项目的方法,使其结构保持不变(所有文件都保持不变)?请不要使用 grep。
编辑:
我找到了一个潜在的解决方案(这些天你在互联网上能找到的东西真是太棒了)。它是 boost.wave - 一个 C++ 预处理器库,可以做一些有趣的事情。我不知道结果如何,但我会试一试。不过,这不是最终的答案,所以如果你有解决方案,我会很高兴听到的。
【问题讨论】:
-
您为什么要这样做?可读性?为什么不让#ifdefs 保留,这样如果你想分享你的修改,它仍然会交叉编译。
-
@j-a 我在 main.c 文件中计算了 250 个 ifdef。对我理解所有正在发生的事情来说,这真的是一个问题。另外,我只想将特定于平台的代码添加到项目中。
-
为什么不允许使用正则表达式?
-
我想到了完美的解决方案,直到我读到你的最后一句话。
-
我的系统上有 grep。和 Perl。和 Python。如果没有这些基本工具,人们如何完成任何事情?
标签: c visual-c++ c-preprocessor conditional-compilation