我是C的新手,我正在处理别人的代码,我正试图摆脱这样的警告:
warning: function expects to return value: myfunc
myfunc是这样声明的,(我相信它默认为int)
myfunc(int id, int age) {
...
return;
}
所以我试着把void放在myfunc后面,让它看起来像这个
void myfunc(int num, int age) {
我得到一个错误:
重新声明的标识符:myfunc
current : function() returning void previous: function() returning int : "students.c", line 233
但当我转到student.c的第233行时,这只是我实际调用函数的第一个地方。为什么会发生这种情况?
我知道我可以把return
改为return 0;
,然后把myfunc定义为int。但当调用这个函数时,它没有分配给任何东西,只是像myfunc(current_id, age);
一样执行(例如,不是int i = myfunc(...
)。
在这种情况下,最好不要使用void吗?在void
函数中使用return;
可以吗?
谢谢!
函数myfunc()
声明为无返回类型(某处):
myfunc(int id, int age);
或者根本没有声明,所以它默认为int
返回类型。当您在定义中指定void
时:
void myfunc(int id, int age)
{
}
它与声明不匹配。更改或添加声明:
void myfunc(int id, int age);
您不需要在具有void
返回类型的函数中显式编写return;
,但如果您愿意,您可以。
将void
添加到myfunc
的实现中是正确的。然而,看起来最初的程序员很草率,在students.c
中使用myfunc
之前没有为其声明函数原型。在233行之前的某个地方添加该原型,你应该可以开始了!