函数期望返回C中的值



我是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行之前的某个地方添加该原型,你应该可以开始了!

最新更新