3

我正在使用C语言开发一个大型项目,该项目有很多预处理器宏:#ifdef/#if。宏在 makefile 中定义。

为了获得干净的代码,我修改了生成文件以使用“gcc -E”。但是 gcc 预处理器也会扩展包含的头文件,这是我不期望的。

有什么方法可以在不扩展包含的头文件的情况下摆脱#ifdef/#if?我搜索了 GCC 选项,但还没有找到答案。

一个例子:

    #include "a.h"
    #ifdef ABC
    func()
    #else
    func(a)
    #endif
    {
    ...
    }

在makefile中,这个源是用-DABC编译的,我正在寻找一种方法来将文件更改为:

    #include "a.h"
    func()
    {
    ...
    }
4

1 回答 1

2

如果您只想从代码中删除预处理器条件,您可以使用unifdef

unifdef -DFOO header.h
于 2013-04-24T09:57:18.840 回答