Предупреждение 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
}