C предупреждение 'return' без значения, в функции, возвращающей не void - PullRequest
3 голосов
/ 11 марта 2010

У меня есть это предупреждение.

предупреждение: 'return' без значения, в функции, возвращающей не void.

Ответы [ 3 ]

14 голосов
/ 11 марта 2010

У вас есть что-то вроде:

int function(void)
{
    return;
}

Добавьте возвращаемое значение или измените тип возвращаемого значения на void.

Сообщение об ошибке очень ясно:

предупреждение: 'return' без значения, в функции, возвращающей non-void.

Возвращение без значения похоже на то, что я показал. Сообщение также сообщает вам, что если функция вернет void, она не выдаст предупреждение. Но поскольку функция должна возвращать значение, а ваш оператор return - нет, у вас есть проблема.

Это часто указывает на древний код. В дни, предшествовавшие стандарту C89, компиляторы не обязательно поддерживали void. Принятый стиль был тогда:

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

Технически, функция возвращает int, но никакого значения не ожидалось. Этот стиль кода выдает предупреждение, которое вы получили - и C99 официально запрещает его, но компиляторы продолжают принимать его по причинам обратной совместимости.

4 голосов
/ 11 марта 2010

Это предупреждение также возникает, если вы забыли добавить оператор возврата в качестве последнего оператора:

int func(){}

Если вы не укажете тип возвращаемого значения функции, по умолчанию используется значение int, чтобы не аннулировать, поэтому это также ошибки:

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

Если вам действительно не нужно возвращать значение, вы должны объявить вашу функцию как возвращающую void:

void func(){}
void func(){ return; }
3 голосов
/ 11 марта 2010

Это предупреждение появляется, когда вы делаете это:

int t() { return; }

Поскольку объявлено, что t() возвращает int, но оператор return не возвращает int. Правильная версия:

int t() { return 0; }

Очевидно, ваш код более сложный, но в вашем коде должно быть довольно легко обнаружить return.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...