C 如何解决这个问题;控制达到非无效函数的末尾“;警告

C 如何解决这个问题;控制达到非无效函数的末尾“;警告,c,function,warnings,compiler-warnings,C,Function,Warnings,Compiler Warnings,我收到一个编译器错误控件到达非void函数的末尾。有问题的代码[将if语句和if语句主体省略为⋯]的格式为: extern RC_Code_t osa_odm_init (void) { if ( ⋯ ) { ⋯ ⋯ return (RC_OK); } } 我将函数的返回值指定为void,但我得到了一个错误。如何解决此问题?当函数返回类型不是void时,会出现控件到达非void函数末尾的警告,但函数可以在没有返回的情况下到

我收到一个编译器错误
控件到达非void函数的末尾
。有问题的代码[将if语句和if语句主体省略为
]的格式为:

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

我将函数的返回值指定为
void
,但我得到了一个错误。如何解决此问题?

当函数返回类型不是void时,会出现
控件到达非void函数末尾的警告,但函数可以在没有
返回的情况下到达末尾

它可能是由控制语句引起的,例如if语句和缺少的return语句

要回答“我将函数的返回值指定为void,但我得到了一个错误”

  • 函数
    osa_odm_init
    返回一个
    RC_code\u t
    ,而不是
    void
    void
    在参数中,表示没有参数
实际原因是它返回
RC\u code\t
,但是
return
仅在if语句为true时出现,如果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
}

返回值类型是
RC\u code\t
,而不是
void
。参数参数列表为
void
。如果返回类型是
void
,那么您将遇到一个全新的问题(
return(RC_OK);
没有意义)!好的,那么如何解决此警告?您的
return
语句仅在
if
块中。当该条件失败时,您不会执行正确的
return
语句语句在
if
之外。或者我可以添加返回0吗?RC\u代码类型是什么?如果它是数字,那么您可以这样做。为了澄清问题,您应该说明RC_OK和其他RC值的含义。我已经向您发送了一个改进代码格式的建议编辑。RC_code_t是一个enumWell,对于
if
语句为false的情况,它仍然必须返回。也就是说,您需要返回一个不同的
RC\u code\t
对象。请您接受我的编辑建议,并在您的问题中添加
RC\u code\t
enum是如何实现的,以便对其进行澄清。对不起,这是错误的。我已将其还原。