如何解决“控制到无效功能结束”的警告?

时间:2018-06-01 06:12:24

标签: c warnings compiler-warnings

我收到了编译错误control reaches end of non-void function。有问题的代码是:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

实际原因是它返回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
}