如何清理C中的隐式函数声明?

如何清理C中的隐式函数声明?,c,function,C,Function,我对功能声明有一个问题: 我在b.c.中声明了一个函数 //b.c void getNumber(); //common header common.h 在交流中,我是这样使用的: //a、 c 但是它抱怨getNumber是函数的隐式声明,原因是什么?在common.h void getNumber(); b.c文件应该以这种方式包含函数定义 void getNumber() { .... } 将以下行添加到common.h void getNumber(); b.c文件应该

我对功能声明有一个问题:

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

//b.c
void getNumber();

//common header
common.h
在交流中,我是这样使用的: //a、 c


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

common.h

void getNumber();
b.c文件应该以这种方式包含函数定义

void getNumber() {
    ....
}

将以下行添加到
common.h

void getNumber();
b.c文件应该以这种方式包含函数定义

void getNumber() {
    ....
}

在使用函数之前,需要先声明或定义函数

如果您的声明
void getNumber()在第一次使用后被编译器读取(
void getInfo()
),您将得到警告
警告:函数“getNumber”的隐式声明
。这是因为编译器在
void getInfo()
中第一次遇到
getNumber
时必须猜测其返回类型,因此出现警告。我认为这就是您正在做的,即使您的示例代码没有这样显示

如果您的
void getNumber(),不会出现任何警告


把你的函数声明放在一个头文件中,像这样是一个好主意。在使用函数之前,请确保在
getInfo()
之前先包含“common.h”

如果您的声明
void getNumber()在第一次使用后被编译器读取(
void getInfo()
),您将得到警告
警告:函数“getNumber”的隐式声明
。这是因为编译器在
void getInfo()
中第一次遇到
getNumber
时必须猜测其返回类型,因此出现警告。我认为这就是您正在做的,即使您的示例代码没有这样显示

如果您的
void getNumber(),不会出现任何警告


把你的函数声明放在一个头文件中,像这样是一个好主意。在你的
getInfo()

之前,确保
首先包含“common.h”
,你应该将声明放入
common.h
,而不是
b.c
void foo()
不是原型,你应该使用
void foo(void)
来代替。你应该将声明放入
common.h
,notinto
b.c
void foo()
不是原型,您应该使用
void foo(void)