Как устранить предупреждение «управление достигает конца не пустой функции»? - PullRequest
0 голосов
/ 01 июня 2018

Я получаю ошибку компилятора control reaches end of non-void function.Код, о котором идет речь:

extern RC_Code_t osa_odm_init (void)
{
    if ( ... )
    {
        ........
        ........
        return (RC_OK);
    }
}

Я указал возвращаемое значение функции как void, но получаю ошибку.Как это исправить?

1 Ответ

0 голосов

Предупреждение control reaches end of non-void function появляется, когда этот тип возврата функции не является недействительным, но функция может достигнуть конца без return.

Это может быть вызвано управляющими операторами, такими как операторы if и отсутствующие операторы возврата.

Чтобы ответить " Я указал возвращаемое значение функции как void, но я получаюошибка",

  • Ваша функция osa_odm_init возвращает RC_Code_t, а не void.void находится в аргументах, что указывает на отсутствие аргументов.

Фактическая причина в том, что он возвращает RC_Code_t, но return присутствует только в том случае, если выражение if верно, выпропускаются return, если оператор if не выполняется.Отредактированный код должен быть

extern RC_Code_t osa_odm_init (void)
{
    if ( odmInitFlag == BOOL_FALSE )
    {
        ........
        ........
        return (RC_OK);
    }
    // This section runs if ( odmIntFlag != BOOL_FALSE )
    // In your original code, you omitted the return
    return RC_ERROR; // Edit: Or return another RC_Code_t result
}
...