如何清除C语言中函数的隐式声明



我有一个关于函数声明的问题:

我在b.c中声明了一个函数

//b.c
void getNumber();
//common header
common.h

在ac中我这样使用它://交流

#include "common.h"
void getInfo()
{
   getNumber();
}

但是它抱怨getNumber是函数的隐式声明,原因是什么?

将以下行添加到common.h

void getNumber();

b.c文件应该以这种方式包含函数定义

void getNumber() {
    ....
}

你需要在使用你的函数之前先声明或定义它。

如果您的声明void getNumber();在第一次使用(void getInfo())后被编译器读取,您将得到警告warning: implicit declaration of function ‘getNumber’。这是因为当编译器第一次在void getInfo()中遇到getNumber时,必须猜测它的返回类型——因此出现了警告。我认为这是你正在做的,即使你的示例代码没有这样显示。

如果编译器先读取void getNumber();,则不会出现警告。

将函数声明放在头文件中是个好主意。在getInfo()之前一定要先写include "common.h"

最新更新