1
我正在使用Android NDK構建C庫,該庫鏈接到另一個團隊提供的一些靜態庫。如果我調用其中一個庫中定義的函數,但未由我的任何導入的頭文件聲明,則不會收到編譯器的錯誤或警告。它看起來像編譯器假定我傳入的參數是正確的類型。我不喜歡這樣,因爲我可能會錯誤地調用函數而不知道它。Android NDK:調用未聲明的函數時沒有錯誤或警告
例如,如果靜態庫包含像函數「空隙MYFUNC(INT一個,字符* B);」,那麼我期待以下每個,以產生一個錯誤:
- MYFUNC() ;
- MyFunc(1,2);
- MyFunc(1,'2',3);
如果我包含函數的聲明,那麼編譯器會強制參數的數量和類型是正確的。
有沒有辦法告訴NDK編譯器在對未聲明函數進行調用時顯示錯誤或警告?
好的,我明白了。在Android.mk中,向LOCAL_CFLAGS變量添加「-Wimplicit-function-declaration」或「-Werror-implicit-function-declaration」。 – jason44107
通常只需拋出'-Wall',其中包括C的「-Wimplicit-function-declaration」(以及其他大約28個)。這實際上並不是「全部」警告,只是通常有用的警告。 – fadden