35

私は現在 Xcode 4 を使用しており、.pch ファイルには次のマクロがあります #define localize(s) NSLocalizedString((s), nil)
このマクロを .m ファイルで使用しようとすると、次の警告が表示されますImplicit declaration of function 'localize' is invalid in C99

このコードは問題なくコンパイルされますが、警告が表示されないようにするにはどうすればよいでしょうか?

4

5 に答える 5

51

NSLog を DLog にグローバルに置き換えたときに、この問題が発生しました。私は愚かにも

#define DLog(...) NSLog(...

ステートメントなので、私は

#define DLog(...) DLog(...

これが警告の原因であり、リンカ エラーが発生しました。

于 2012-12-12T18:25:06.793 に答える
34

暗黙的な関数宣言は、コンパイラが最初に関数呼び出しとして使用されるものです (プロトタイプまたは関数定義が最初に見られるものとは対照的に)。

どうやらあなたのコードは使用されlocalize(foo)ましたが、マクロ定義は表示されませんでした。#include考えられる理由: マクロを含むファイルを忘れたlocalizeか、ヘッダーのプリコンパイルがうまくいかず、localizeマクロが含まれていなかったため、展開されずに残っていました。

于 2011-08-25T12:10:46.157 に答える
1

次のように CocoaLumberjack を誤ってインポートしたため、この問題が発生しました。

#import <CocoaLumberjack/DDLog.h>

CocoaLumberjack チームがコードをさらにモジュール化したようです。のようなマクロDDLogErrorは、独自のヘッダー ファイルで個別に定義されるようになりました。

import ステートメントをこれに置き換えたところ、エラーはなくなりました。

#import <CocoaLumberjack/CocoaLumberjack.h>
于 2014-10-16T09:09:44.343 に答える
1

私の場合、このエラーが発生したのは 1 つのファイルだけでした。プロジェクトのテスト ターゲット メンバーシップ (右側のファイル インスペクター) に追加したことが判明しました。

于 2017-01-29T00:17:02.037 に答える