我正在使用C编程语言开发一个大型项目,其中有很多预处理宏:#ifdef/#if。这些宏在makefile中定义。
为了让代码更简洁,我修改了makefile文件使用"gcc -E"进行预处理。但是gcc预处理器也会将包含的头文件展开,而我并不希望这样。
有没有办法在不展开包含的头文件的情况下去除 #ifdef/#if?我查找了GCC选项,但还没有找到答案。
以下是一个示例:
#include "a.h"
#ifdef ABC
func()
#else
func(a)
#endif
{
...
}
在makefile中,这个源码是使用-DABC编译的,我正在寻找一种方法将文件更改为:
#include "a.h"
func()
{
...
}
#ifndef _OMIT_HEADERS_
,#endif
,然后使用gcc -E -D_OMIT_HEADERS_
吗? - steabert#ifdef
块?。 - Jonathan Leffler