我收到了编译错误control reaches end of non-void function
。有问题的代码是:
extern RC_Code_t osa_odm_init (void)
{
if ( ... )
{
........
........
return (RC_OK);
}
}
我将函数的返回值指定为void但我收到错误。如何解决这个问题?
答案 0 :(得分:1)
当该函数返回类型不为空时,会发生control reaches end of non-void function
警告,但该函数可以在没有return
的情况下到达的末尾。
它可能是由诸如if语句和缺少返回语句之类的控制语句引起的。
要回答" 我将该函数的返回值指定为void但我收到错误",
osa_odm_init
会返回RC_Code_t
,而不是void
。 void
在参数中,表示没有参数。实际原因是它返回RC_Code_t
,但return
只有if语句为真时才会出现,如果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
}