2013-07-26 105 views
1

我正在使用Android NDK構建C庫,該庫鏈接到另一個團隊提供的一些靜態庫。如果我調用其中一個庫中定義的函數,但未由我的任何導入的頭文件聲明,則不會收到編譯器的錯誤或警告。它看起來像編譯器假定我傳入的參數是正確的類型。我不喜歡這樣,因爲我可能會錯誤地調用函數而不知道它。Android NDK:調用未聲明的函數時沒有錯誤或警告

例如,如果靜態庫包含像函數「空隙MYFUNC(INT一個,字符* B);」,那麼我期待以下每個,以產生一個錯誤:

  • MYFUNC() ;
  • MyFunc(1,2);
  • MyFunc(1,'2',3);

如果我包含函數的聲明,那麼編譯器會強制參數的數量和類型是正確的。

有沒有辦法告訴NDK編譯器在對未聲明函數進行調用時顯示錯誤或警告?

+0

好的,我明白了。在Android.mk中,向LOCAL_CFLAGS變量添加「-Wimplicit-function-declaration」或「-Werror-implicit-function-declaration」。 – jason44107

+1

通常只需拋出'-Wall',其中包括C的「-Wimplicit-function-declaration」(以及其他大約28個)。這實際上並不是「全部」警告,只是通常有用的警告。 – fadden

回答

0

在Android.mk中,將-Wimplicit-function-declaration-Werror-implicit-function-declaration添加到LOCAL_CFLAGS變量。或者添加-Wall;這也很好。 (謝謝,fadden!)