警告:隐式声明函数

SSS*_*SSS 2 c

我在C编程,我的gcc编译器在我的函数调用中给出了以下警告 mySedondFile.c:

implicit declaration of function 'func'
Run Code Online (Sandbox Code Playgroud)

函数原型声明myfile.h为:

void  func(char*);
Run Code Online (Sandbox Code Playgroud)

函数定义在 myfile.c

void  func(char*x);
Run Code Online (Sandbox Code Playgroud)

mySecondFile.c 包含:

#include "myfile.h"

func("Hello");
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这会抱怨.

Dav*_*nan 6

发出该错误是因为func尚未在您调用它时声明该错误.

听起来你的头文件并不像你描述的那样.也许有一些条件代码.也许你有一个不能正常工作的头部防守.另一种可能性是你有一个字母大小写错误并声明了该函数Func但是调用了它func.很难说没有看到实际的文件,但你需要寻找一个func没有在mySecondFile.c翻译单元中声明的原因.

为了更清楚地说明这一点,以下代码:

int main(void)
{
    func("Hello");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

导致此警告:

prog.c: In function ‘main’:
prog.c:3: warning: implicit declaration of function ‘func’
Run Code Online (Sandbox Code Playgroud)

这正如你报道的那样.

根据您的描述,您的代码包含一个声明的头文件func.编译器需要与您不同,您仍然可以找出func未声明的原因.