2011-10-22 24 views
2

なし前のプロトタイプ私は警告取得しています「関数には、前のプロトタイプ 『LocStr』」次のコードに:Xcodeの警告:機能

NSString *LocStr(NSString *const key) { 
    return [[NSBundle mainBundle] localizedStringForKey:key value:nil table:nil]; 
} 

すべてのコードが正常に動作している、という問題がありますこの警告とともにApp Storeにアプリを提出しますか?この警告には全く問題はありませんか?

[ビルド設定] - > [関数プロトタイプが見つかりません] - > [いいえ]でプロトタイプの警告を無効にすることができます。しかし、私は、この警告が今後クラッシュや拒否を引き起こさないことを確かめたかったのです。

誰でも?

ありがとうございます!

+0

を呼びますか? :-) – sidyll

答えて

6

これをご覧ください。ここでどのような可能性がありますか?

`FOO」の以前のプロトタイプ

これは、GCCは関数のプロトタイプを見ることなくグローバル関数の定義を見つけたことを意味します。

o関数が複数のファイルで使用されている場合は、そのファイルのプロトタイプがヘッダーファイルのどこかに存在する必要があります。これは、関数がこのファイルのみで使用されている場合は O、それはそれはだ、このファイル 文書の外で使用することはないだろうということ 保証することは、静的作る同期してい

を得ることから機能と その使用を続けますあなたは彼らが何であるか知っている限り地元の機能

[Source]

はちょうど彼らがあなたが実現するよりも、脅威の多くを引き起こす可能性があり、警告を無視しないでください。


質問に少し接することはありますが、文字列をローカライズする方が簡単かもしれません。これは私が使用するソリューションです。

#define local(s) NSLocalizedString(s, s)

それからちょうどそれが承認されているとは何の関係もありませんが、なぜプロトタイプを追加しないlocal(@"myStringKey");

+1

私は警告を無視していません、なぜこのトピックを作成したのですか? :)他の話題では、みんなビルドセッティングのチャンスを無視すると言っています。そして私はさらに簡単な解決策を見つける、私は行にSTATICを追加し、警告が消える: "静的NSString * LocStr(NSString * constキー)"。申し訳ありませんが、私はノブですが、私はこのコードで間違いを犯すのを恐れています。 – tomDev

+0

質問をすることは良いことです。無視していることがわからない限り、警告を無視しても意味がありません。 あなたは解決策を選択しましたが、その解決策を理解していますか? staticキーワードを導入することで、そのクラスの外でメソッドを使用しないことをプログラムに指示しました。それはあなたが望んだことですか? –

+1

もっと正確に言うと、この場合の 'static'の使用は、_file_または_class_内ではなく、[compilation unit](http://en.wikipedia.org/wiki/Translation_unit_%28programming%29)内での使用に関するものです。 。 – Jeff

関連する問題