C语句'return'没有值,函数返回非void

时间:2010-03-11 04:59:33

标签: c warnings

我有这个警告。

警告:'return'没有值,函数返回非void。

5 个答案:

答案 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
}