c语言 - 如何解决"control reaches end of non-void function"警告?



我一直收到编译器错误control reaches end of non-void function。有问题的代码[省略了if语句和if语句的主体作为]的形式是:

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

我将函数的返回值指定为void,但出现错误。如何解决这个问题?

当该函数返回类型不为 void,但函数可以在没有return的情况下到达末尾时,会出现control reaches end of non-void function警告。

它可能是由控制语句(如 if 语句和缺少的返回语句(引起的。

要回答">我将函数的返回值指定为 void,但收到错误",

  • 你的函数osa_odm_init返回一个RC_Code_t,而不是voidvoid在参数中,表示没有参数。

实际原因是它返回RC_Code_t,但只有当 if 语句为真时,return才会出现,如果 if 语句失败,您将错过return。编辑后的代码应为

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
}

相关内容

  • 没有找到相关文章

最新更新