警告:函数的隐式声明 - 包含的顺序很重要?

warning: implicit declaration of function - order of includes matter?

我有以下来自 main.c 的示例代码片段,它调用了 3 个函数,其中有 3 个 headers - 出于未知原因向我发出警告:

#include "header1.h"
#include "header2.h"
#include "header3.h"

int main()
{
  function1(); // this is from header1
  function2(); // this is from header2
  function3(); // this is from header 3
} 

基本上,使用gcc后,函数2和3都会产生警告。但是,将代码重新排列为如下所示:

#include "header3.h"
#include "header1.h"
#include "header2.h"
   

int main()
{
  function1(); // this is from header1
  function2(); // this is from header2
  function3(); // this is from header 3
} 

然后它会警告我功能 1 和 2 是隐式的。我在这里做错了什么?

您的包含文件 1 应如下所示:

#ifndef __REZON_FUNCTIONS1__ 
#define __REZON_FUNCTIONS1__ 

#endif

其他两个文件应该类似,宏名称相应更改