我有一个关于函数声明的问题:
我在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"