如何在#define之类的宏扩展后运行GCC预处理器来获取代码?

时间:2010-10-12 16:38:13

标签: gcc

是否有选项可以让GCC预处理器生成C源代码并过滤掉不相关的源代码?

例如,.c文件具有#define开关,可以为许多不同的平台定义。我只对一个平台感兴趣,我希望C预处理器过滤掉不相关的代码。

GCC 是否支持此功能?

3 个答案:

答案 0 :(得分:25)

是。使用-E选项:

gcc -E foo.c

答案 1 :(得分:14)

虽然-E选项将执行所有预处理,但它也会产生一些非常“原始”的输出,可能不是您想要的(取决于您想要的)。

如果您需要调试未达到预期效果的宏扩展,E是一个很好的方法。如果您只想过滤掉“非活动代码”,但将其余代码保留为或多或少的原始格式,您可能需要查看以下Stack Overflow问题的答案:

答案 2 :(得分:4)

听起来你想要unifdef,而不是GCC预处理器。