函数期望在C中返回值

SSH*_*his 0 c function void

我是C的新手,我正在研究其他人的代码,我正试图摆脱一个看起来像这样的警告:

warning: function expects to return value: myfunc
Run Code Online (Sandbox Code Playgroud)

myfunc是这样声明的,(我相信它默认为int)

myfunc(int id, int age) {

   ...
   return;

}
Run Code Online (Sandbox Code Playgroud)

所以我尝试在myfunc后面放置void,使它看起来像这样

void myfunc(int num, int age) {
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

标识符已重新声明:myfunc

    current : function() returning void

    previous: function() returning int : "students.c", line 233
Run Code Online (Sandbox Code Playgroud)

但是当我去student.c的第233行时,这只是我实际上称之为函数的第一个地方.为什么会这样?

我知道我可以更改returnreturn 0;然后将myfunc定义为int.但是当调用这个函数时,它没有分配给任何东西,它只是执行myfunc(current_id, age);(int i = myfunc(...例如).

在这种情况下,最好不要使用void吗?可以return;void函数中使用吗?

谢谢!

hmj*_*mjd 7

myfunc()声明该函数没有返回类型(某处):

myfunc(int id, int age);
Run Code Online (Sandbox Code Playgroud)

或根本没有声明,因此它默认为int返回类型.void在定义时指定:

void myfunc(int id, int age)
{
}
Run Code Online (Sandbox Code Playgroud)

它与声明不符.更改或添加声明:

void myfunc(int id, int age);
Run Code Online (Sandbox Code Playgroud)

您不需要显式写入return;具有void返回类型的函数,但如果您愿意,也可以.