我正在使用 C 语言开发一个大型项目,该语言有很多预处理器宏:#ifdef / #if。宏在makefile中定义。
为了获得干净的代码,我修改了makefile以使用“gcc -E”。但是gcc预处理器也会扩展包含的头文件,这是我不期望的。
是否有任何方法可以摆脱#ifdef /#如果不扩展包含的头文件?我搜索了GCC选项但还没有找到答案。
一个例子:
#include "a.h"
#ifdef ABC
func()
#else
func(a)
#endif
{
...
}
在makefile中,这个源是用-DABC编译的,我正在寻找一种方法来将文件更改为:
#include "a.h"
func()
{
...
}
答案 0 :(得分:2)
如果您只想从代码中删除预处理器条件,可以使用unifdef
:
unifdef -DFOO header.h