1. 程式人生 > >error: control may reach end of non-void function [-Werror,-Wreturn-type]

error: control may reach end of non-void function [-Werror,-Wreturn-type]

這在GCC編譯器中遇到的,關鍵是在其他比如vs編譯器上能通過。這個可能就是編譯器的規則問題了。如果函式內部有分支,而有的分支並沒有返回值。這種情況在vs編譯器中只是一個warning,但是GCC編譯器編譯就是過不了。解決辦法就是在函式的最後進行返回,返回的變數在各個分支進行賦值。這樣就能編譯通過了。另外在遞迴呼叫的時候,這個值有可能成為遞迴函式內部的自動變數,如果不在各個分支內進行賦值,那麼返回的結果有可能是錯誤的。