警告:隐式声明函数

时间:2012-02-14 00:24:48

标签: c

我在C编程,我的gcc编译器在mySedondFile.c:

的函数调用中给出了以下警告
implicit declaration of function 'func'

函数原型在myfile.h中声明为:

void  func(char*);

功能定义在myfile.c

void  func(char*x);

mySecondFile.c包含:

#include "myfile.h"

func("Hello");

我想知道为什么会抱怨。

1 个答案:

答案 0 :(得分:6)

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

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

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

int main(void)
{
    func("Hello");
    return 0;
}

导致此警告:

prog.c: In function ‘main’:
prog.c:3: warning: implicit declaration of function ‘func’

与报告完全一样。

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