【问题标题】:How would you #include multiple .h files to prevent warnings您将如何#include 多个 .h 文件以防止出现警告
【发布时间】:2015-05-22 02:23:03
【问题描述】:

我有一个主 .c 文件,其中包含 4 个 .h 文件和包含在 main 函数中的 .c 文件。像这样:

#include <stdio.h>
#include "file1.h"
#include "file2.h"
#include "file3.h"
#include "file4.h"

int main(){...}

.h 文件包含所有对应的 .c 文件的所有声明。一些 .c 文件确实使用了其他 .c 文件中的函数,例如“file4.c”使用“file2.h”中声明的一些函数,“file1.c”使用“file3.h”中声明的函数。我尝试在每个 .c 文件中声明与 main 中相同的包含,并尝试重新排序包含文件,但我仍然收到有关函数的隐式声明和不兼容的隐式声明的警告消息。

我想知道您将如何在大型项目中使用#include 来消除警告消息。我使用 gcc 作为编译器。

【问题讨论】:

标签: c include include-path gcc-warning


【解决方案1】:

如果你想在 main() 文件的一部分中导入 .h 文件,你必须确保你没有在任何地方导入它。 例如: file4.h 使用 file3.h 中的函数 如果您在文件 file4.h 中导入了 file3.h,则不必在文件 ma​​in() 中导入 file3.h强>。这是重复的定义。 如果你有很多初始化文件。您可以将其导入唯一的常规文件中。并在 ma​​in() 中使用该文件。 希望你喜欢^^

【讨论】:

  • 所以你是说我应该只在 main 中导入其他文件?这是否意味着如果我没有以正确的顺序包含 .h 文件,我仍然会收到警告?
  • 我的意思是你应该以某种方式将所有 .h 文件导入唯一的 init 文件中。并使用该初始化文件 int main 作为唯一的 file.h 这使您的项目清晰
【解决方案2】:

在你自己的所有头文件上试试这个:

(beginning of your head file)
#ifndef   _HEAD_FILE_NAME_H
#define _HEAD_FILE_NAME_H
...
<your headfile contents>
...

#endif
(end of your headfile)

【讨论】:

  • 我有类似的东西,我试试看会发生什么。
  • 执行此操作后我仍然收到很多警告消息。不过还是谢谢。
猜你喜欢
  • 2010-11-06
  • 2014-10-13
  • 2019-09-04
  • 2021-08-28
  • 2016-12-13
  • 1970-01-01
  • 2021-03-25
  • 2021-09-20
  • 1970-01-01
相关资源
最近更新 更多