2012-12-11 58 views
2

使用Android NDK,我有一個返回jobject一個本地方法 - 除了我忘了return語句。不幸的是,這個編譯沒有警告,只給了我一個segfault在0xdeadd00d當我試圖運行它。如何啓用編譯錯誤,遺漏return語句與Android NDK

雖然我一直主要在Java的最近工作,所以在我腦海中的錯誤消息「缺少return語句」,我相信,海灣合作委員會的錯誤消息是「控制到達非void函數的末尾」。

我希望把這一警告,並把它變成一個錯誤。我怎麼做? (只需用-Wall -Werror是不是一種選擇,由於現有的代碼庫,我編譯反對。)

回答

8

一些時間與GCC手冊頁和一些重建,我已經想通了,命令行標誌補充的是-Werror=return-type後。追加到你的Android.mk中的LOCAL_CFLAGS。

此外,找出正是一個給定的錯誤類型被調用時,你可以打開-Wall並檢查編譯器輸出;警告之後,它顯示相關的-W標誌。

error: no return statement in function returning non-void [-Wreturn-type] 

把這一警告在單獨,準確地使用標誌,因爲它出現在括號那裏。要打開它作爲一個錯誤,插入「錯誤=」後,立即-W,如-Werror=return-type