是否有选项可以让GCC预处理器生成C源代码并过滤掉不相关的源代码?
例如,.c
文件具有#define
开关,可以为许多不同的平台定义。我只对一个平台感兴趣,我希望C预处理器过滤掉不相关的代码。
GCC 是否支持此功能?
答案 0 :(得分:25)
是。使用-E
选项:
gcc -E foo.c
答案 1 :(得分:14)
虽然-E
选项将执行所有预处理,但它也会产生一些非常“原始”的输出,可能不是您想要的(取决于您想要的)。
如果您需要调试未达到预期效果的宏扩展,E
是一个很好的方法。如果您只想过滤掉“非活动代码”,但将其余代码保留为或多或少的原始格式,您可能需要查看以下Stack Overflow问题的答案:
答案 2 :(得分:4)
听起来你想要unifdef,而不是GCC预处理器。