如何运行GCC预处理器来获取像#define这样的macros之后的代码?
有没有一个选项,GCC预处理器可以生成C源代码,并筛选出不相关的源代码?
例如,一个.c
文件有一个#define
开关来定义许多不同的平台。 我只对一个平台感兴趣,而且我想让C预处理器过滤出不相关的代码。
GCC支持这个吗?
是。 使用-E
选项:
gcc -E foo.c
虽然-E
选项将执行所有预处理,但它也会产生一些非常“原始”的输出,这可能不是你想要的(取决于你想要的)。
如果你需要debugging一个没有达到预期的macros扩展, E
是一个很好的select。 如果你只是想过滤出“不活动的代码”,但剩下的代码或多或less的原始forms,你可能想看看下面的堆栈溢出问题的答案:
- 是否有一个C预处理器消除#ifdef块基于定义/未定义的值?
听起来你想要unifdef ,而不是GCC预处理器。