警告:函数的隐式声明 - 包含的顺序很重要?
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
其他两个文件应该类似,宏名称相应更改
我有以下来自 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
其他两个文件应该类似,宏名称相应更改