【C++】問題解決:error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type] }

問題描述

碰到以下開頭的內容,問題的解決方式

error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]

問題來源

我解 leetcode 提交答案碰到的情況

解決方法

C++ 的單一 function 有出現沒有 return 值的狀況,
有時候「不一定是邏輯有誤,但會導致 compile 的錯誤

實際上由於 C++ 的編譯器是十分嚴謹的,即使自己已經認為考慮了所有的情況,C++ 也會認為你可能有沒考慮到的內容,請把 default 內容都補齊。

範例

印象中我碰到問題類似以下的結構:

int foo(){
    if(條件)
        return 1;
    else
        return 0;
}

問題就出在 compiler 似乎認為這種狀況會存在沒有 return 的情形,
詳細原因未知 (我當下只有先紀錄解決方法,等未來再碰到再來研究原因)

解決範例

解決方法:我當下是多設定一個 return default 值就可以解決。

int foo(){
    if(條件)
        return 1;
    else
        return 0;
    return 0; // for default
}

Reference

Licensed under CC BY-NC-SA 4.0