【发布时间】:2012-03-15 22:35:09
【问题描述】:
我是 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
但是当我转到students.c 的第233 行时,这只是我实际调用该函数的第一个地方。为什么会这样?
我知道我可以将 return 更改为 return 0;,然后将 myfunc 定义为 int。但是当这个函数被调用时,它并没有分配给任何东西,它只是像myfunc(current_id, age); 一样执行(例如不是int i = myfunc(...)。
在这种情况下,最好不要使用 void 吗?在void 函数中使用return; 可以吗?
谢谢!
【问题讨论】:
-
您是否在某处声明了原型?
-
你应该在students.c的第233行周围显示几行,如果它认为这是一个声明,听起来可能有问题。
-
@JoachimIsaksson,C89 允许在没有原型的情况下调用函数 - 编译器只会假设函数返回
int。 -
在定义该函数之前的某个地方,您有一个函数原型。这也需要改变。它很可能在一个名为
students.h的头文件中 -
这是我的问题,我没有声明原型