在扩展了#define之类的宏之后,如何运行GCC预处理器来获取代码?
GCC预处理器是否可以生成C源代码并过滤掉不相关的源代码 例如,一个在扩展了#define之类的宏之后,如何运行GCC预处理器来获取代码?,gcc,Gcc,GCC预处理器是否可以生成C源代码并过滤掉不相关的源代码 例如,一个.c文件有一个#define开关来定义许多不同的平台。我只对一个平台感兴趣,我希望C预处理器过滤掉不相关的代码 GCC是否支持这一点?是。使用-E选项: gcc -E foo.c 虽然-E选项将执行所有预处理,但它也会产生一些非常“原始”的输出,这些输出可能不是您想要的(取决于您想要的) 如果您需要调试一个宏扩展,但它没有达到预期效果,E是一个很好的方法。如果您只是想过滤掉“非活动代码”,但将剩下的代码保留为或多或少的原始形式
.c
文件有一个#define
开关来定义许多不同的平台。我只对一个平台感兴趣,我希望C预处理器过滤掉不相关的代码
GCC是否支持这一点?是。使用
-E
选项:
gcc -E foo.c
虽然
-E
选项将执行所有预处理,但它也会产生一些非常“原始”的输出,这些输出可能不是您想要的(取决于您想要的)
如果您需要调试一个宏扩展,但它没有达到预期效果,E
是一个很好的方法。如果您只是想过滤掉“非活动代码”,但将剩下的代码保留为或多或少的原始形式,您可能需要查看以下堆栈溢出问题的答案:
#include
s(因此请准备大量滚动)。此问题在上有一个副本,其中包含其他答案和讨论。Visual studio: