C语言 GCC包含头文件,预处理后得到输出



我想要一个。c文件的预处理输出,但我也想包含一个头文件,不包含宏"include…"在.c文件中。通常,您可以添加-I选项来包含存放头文件的目录。但是,如果我想组合-I和-E, gcc似乎不会在指定的目录中包含我的头文件。我的命令:

gcc -E -I/externDefines myFirmware.c > myFirmware.preprocessed

有谁知道是什么问题吗?

-I并不意味着"在编译中包含给定目录中的头文件"。它的意思是"当搜索#include请求的文件时,在给定的目录中查找该文件。">

GCC有一个命令行开关-includefile,它将在编译中包含一个文件。然而,它只包含一个文件,所以你必须列出你想包含的每个文件;它不会自动将所有头文件包含在单个目录中。您正在使用的命令行shell可能具有帮助生成具有文件名的-include开关列表的特性。

在编译Y.c而不更改Y.c的情况下,包含头文件X.h的一种可移植的方法是创建一个辅助文件,其中包含:
#include "X.h"
#include "Y.c"

,然后编译它而不是Y.c

最新更新