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是如何实现的,以便对其进行澄清。对不起,这是错误的。我已将其还原。