[Objective-c] 隱式函數聲明 - C99


Answers

隱式函數聲明是編譯器第一次將其用作函數調用的那些函數聲明(與首先看到原型或函數定義的聲明相反)。

顯然你的代碼使用localize(foo)但宏定義不可見。 可能的原因:你忘了#include包含本地化宏的文件,或者是預編譯的頭文件向南,沒有包含localize宏,所以沒有展開。

Question

我正在使用Xcode 4,並在我的.pch文件中我有這個宏: #define localize(s) NSLocalizedString((s), nil)
當我試圖在一些.m文件中使用這個宏時,我收到這個警告: Implicit declaration of function 'localize' is invalid in C99

此代碼編譯沒有問題,但我怎麼能解決這個問題,所以我沒有得到警告?




我有這個問題,因為我不小心像這樣導入CocoaLumberjack:

#import <CocoaLumberjack/DDLog.h>

顯然,CocoaLumberjack團隊更加模塊化了代碼。 和像DDLogError這樣的宏現在在它們自己的頭文件中分別定義。

我用這個替換了import語句,錯誤消失了:

#import <CocoaLumberjack/CocoaLumberjack.h>