我有这个警告。
警告:'return'没有值,函数返回非void。
答案 0 :(得分:13)
你有类似的东西:
int function(void)
{
return;
}
添加返回值,或将返回类型更改为void。
错误信息非常明确:
警告:'return'没有值,函数返回非void。
没有价值的回报与我所展示的类似。该消息还告诉您,如果函数返回'void',它将不会发出警告。但是因为函数应该返回一个值而你的'return'语句没有,你就有问题了。
这通常表示古代代码。在C89标准之前的几天,编译器不一定支持'void'。接受的风格是:
function_not_returning_an_explicit_value(i)
char *i;
{
...
if (...something...)
return;
}
从技术上讲,该函数返回int
,但没有预期值。这种代码风格引发了你的警告 - 而且C99正式禁止它,但编译器继续接受它,因为它们具有向后兼容性。
答案 1 :(得分:4)
如果您忘记添加return语句作为最后一个语句,也会发生此警告:
int func(){}
如果你没有指定函数的返回类型,它默认为int而不是void,所以这些也是错误:
func(){}
func(){ return; }
如果你真的不需要返回一个值,你应该将你的函数声明为返回void:
void func(){}
void func(){ return; }
答案 2 :(得分:3)
执行此操作时会发出此警告:
int t() { return; }
因为声明t()
返回int
,但return语句没有返回int
。正确的版本是:
int t() { return 0; }
显然,您的代码更复杂,但在代码中找到一个裸return
应该相当容易。
答案 3 :(得分:0)
无论何时不使用void(null)返回值声明任何函数,
void examPle(){//Function block with no return type }
,您应该始终将有效的返回类型指定为o / p。以下是编写 main 块时应返回的基本语法。
int main(){
return 0;
}
此处返回0; 表示成功。
答案 4 :(得分:0)
在创建一个新类时将一个类声明为 void 例如
void sum(int a, int b)
{
//function
}