gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:27:45 29 4
gpt4 key购买 nike

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

最佳答案

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

unifdef -DFOO header.h

关于c - 如何在不展开包含的头文件的情况下预编译C源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183423/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com