私は現在 Xcode 4 を使用しており、.pch ファイルには次のマクロがあります
#define localize(s) NSLocalizedString((s), nil)。
このマクロを .m ファイルで使用しようとすると、次の警告が表示されますImplicit declaration of function 'localize' is invalid in C99。
このコードは問題なくコンパイルされますが、警告が表示されないようにするにはどうすればよいでしょうか?
私は現在 Xcode 4 を使用しており、.pch ファイルには次のマクロがあります
#define localize(s) NSLocalizedString((s), nil)。
このマクロを .m ファイルで使用しようとすると、次の警告が表示されますImplicit declaration of function 'localize' is invalid in C99。
このコードは問題なくコンパイルされますが、警告が表示されないようにするにはどうすればよいでしょうか?
NSLog を DLog にグローバルに置き換えたときに、この問題が発生しました。私は愚かにも
#define DLog(...) NSLog(...
ステートメントなので、私は
#define DLog(...) DLog(...
これが警告の原因であり、リンカ エラーが発生しました。
暗黙的な関数宣言は、コンパイラが最初に関数呼び出しとして使用されるものです (プロトタイプまたは関数定義が最初に見られるものとは対照的に)。
どうやらあなたのコードは使用されlocalize(foo)ましたが、マクロ定義は表示されませんでした。#include考えられる理由: マクロを含むファイルを忘れたlocalizeか、ヘッダーのプリコンパイルがうまくいかず、localizeマクロが含まれていなかったため、展開されずに残っていました。
次のように CocoaLumberjack を誤ってインポートしたため、この問題が発生しました。
#import <CocoaLumberjack/DDLog.h>
CocoaLumberjack チームがコードをさらにモジュール化したようです。のようなマクロDDLogErrorは、独自のヘッダー ファイルで個別に定義されるようになりました。
import ステートメントをこれに置き換えたところ、エラーはなくなりました。
#import <CocoaLumberjack/CocoaLumberjack.h>
私の場合、このエラーが発生したのは 1 つのファイルだけでした。プロジェクトのテスト ターゲット メンバーシップ (右側のファイル インスペクター) に追加したことが判明しました。