首页 文章

如何在不扩展包含的头文件的情况下预编译C源文件?

提问于
浏览
3

我正在使用 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()
    {
    ...
    }

1 回答

  • 2

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

    unifdef -DFOO header.h
    

相关问题