C Warning 'Return' with No Value, in Function Returning Non-Void

I have this warning.

warning : 'return' with no value, in function returning non-void.

2

5 Answers

You have something like:

int function(void)
{
    return;
}

Add a return value, or change the return type to void.

The error message is very clear:

warning : 'return' with no value, in function returning non-void.

A return with no value is similar to what I showed. The message also tells you that if the function returns 'void', it would not give the warning. But because the function is supposed to return a value but your 'return' statement didn't, you have a problem.

This is often indicative of ancient code. In the days before the C89 standard, compilers did not necessarily support 'void'. The accepted style was then:

function_not_returning_an_explicit_value(i)
char *i;
{
    ...
    if (...something...)
        return;
}

Technically, the function returns an int, but no value was expected. This style of code elicits the warning you got - and C99 officially outlaws it, but compilers continue to accept it for reasons of backwards compatibility.

1

This warning also happens if you forget to add a return statement as the last statement:

int func(){}

If you don't specify the return type of a function it defaults to int not to void so these are also errors:

func(){}
func(){ return; }

If you really do not need to return a value you should declare your function as returning void:

void func(){}
void func(){ return; }

This warning happens when you do this:

int t() { return; }

Because t() is declared to return an int, but the return statement isn't returning an int. The correct version is:

int t() { return 0; }

Obviously your code is more complicated, but it should be fairly easy to spot a bare return in your code.

while making a new class declare a class as void i.g.

void sum(int a, int b)
{
 //function
}

Whenever you are not declaring any function with void(null) return value,

void examPle(){//Function block with no return type }

, you should always specify a valid return type you expext as the o/p. Below is the basic syntax of what you should be returning when writing your main block.

int main(){ 
return 0;
}

here return 0; means success.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest