如何解决 "control reaches end of non-void function" 警告?
How to solve the "control reaches end of non-void function" warning?
我遇到编译器错误 control reaches end of non-void function
。有问题的代码 [if 语句和 if 语句的主体被省略为 ⋯
] 的形式为:
extern RC_Code_t osa_odm_init (void)
{
if ( ⋯ )
{
⋯
⋯
return (RC_OK);
}
}
我将函数的 return 值指定为 void
,但出现错误。如何解决这个问题?
当函数 return 类型不为 void 时,会出现 control reaches end of non-void function
警告,但函数可以在没有 return
的情况下到达结尾 .
这可能是由 if 语句和缺少 return 语句等控制语句引起的。
回答“我将函数的 return 值指定为 void 但出现错误”,
- 您的函数
osa_odm_init
return 是 RC_Code_t
,而不是 void
。 void
在参数中,表示没有参数。
实际原因是它 returns RC_Code_t
,但是 return
仅在 if 语句为真时才会出现,您错过了 return
如果 if 语句失败。编辑后的代码应该是
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
}
我遇到编译器错误 control reaches end of non-void function
。有问题的代码 [if 语句和 if 语句的主体被省略为 ⋯
] 的形式为:
extern RC_Code_t osa_odm_init (void)
{
if ( ⋯ )
{
⋯
⋯
return (RC_OK);
}
}
我将函数的 return 值指定为 void
,但出现错误。如何解决这个问题?
当函数 return 类型不为 void 时,会出现 control reaches end of non-void function
警告,但函数可以在没有 return
的情况下到达结尾 .
这可能是由 if 语句和缺少 return 语句等控制语句引起的。
回答“我将函数的 return 值指定为 void 但出现错误”,
- 您的函数
osa_odm_init
return 是RC_Code_t
,而不是void
。void
在参数中,表示没有参数。
实际原因是它 returns RC_Code_t
,但是 return
仅在 if 语句为真时才会出现,您错过了 return
如果 if 语句失败。编辑后的代码应该是
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
}