[英]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);
}
}
我將函數的返回值指定為void
但出現錯誤。 如何解決這個問題?
當該函數返回類型不是 void 時,會發生control reaches end of non-void function
的結尾,但該函數可以在沒有return
情況下到達結尾。
它可能是由控制語句(例如 if 語句和缺少 return 語句)引起的。
要回答“我將函數的返回值指定為 void 但出現錯誤”,
osa_odm_init
返回RC_Code_t
,而不是void
。 void
在參數中,表示沒有參數。 實際的原因是,它返回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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.