【问题标题】:gcc include header and get output after preprocessinggcc 包含标头并在预处理后获取输出
【发布时间】:2021-10-16 15:58:09
【问题描述】:

我想要一个 .c 文件的预处理输出,但我还想在 .c 文件中包含一个没有宏“include...”的头文件。通常,您添加 -I 选项以包含标题所在的目录。 但是如果我想组合 -I 和 -E,gcc 似乎没有在指定目录中包含我的头文件。 我的命令:

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

有谁知道问题出在哪里?

【问题讨论】:

  • 您可能正在寻找-include <path> 标志。
  • " 但我还想包含一个没有宏的头文件 "include..."" 这不是宏,而是包含。以及在 C 中包含文件的正确方法。如果您出于某种原因不想使用它(构建单元测试等),请考虑将您正在测试的文件包装在另一个包含相关包含的文件中。

标签: c gcc include preprocessor


【解决方案1】:

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

GCC 有一个命令行开关-include <i>file</i>,它将在编译中包含一个文件。但是,它包含一个文件,因此您必须列出要包含的每个文件;它不会自动将所有头文件包含在单个目录中。您正在使用的命令行 shell 可能具有帮助生成带有文件名的-include 开关列表的功能。

在不更改 Y.c 的情况下编译 Y.c 时包含头文件 X.h 的可移植方法是创建一个包含以下内容的辅助文件:

#include "X.h"
#include "Y.c"

然后编译它而不是 Y.c

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2013-01-06
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多