この警告は、一部のサードパーティライブラリで大量に発生しています。
コードを変更せずにそれを処理する方法はありますか(警告を無視するなど)?
コードを修正して修正する必要がある場合、どうすればよいですか?
警告を引き起こしているコードブロックの1つを次に示します。
BOOL FBIsDeviceIPad() {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return YES;
}
#endif
return NO;
}
通常、このような警告では、ファイルの先頭に関数プロトタイプを定義できます。たとえば、次のようになります。
BOOL FBIsDeviceIPad();
But Cでは、中括弧の間に何もないメソッド、つまり()
は、実際には任意の数のパラメーターがあることを意味します。代わりに、定義は(void)
になり、noパラメータを示します。
BOOL FBIsDeviceIPad(void);
...
BOOL FBIsDeviceIPad(void) {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return YES;
}
#endif
return NO;
}
Xcode4で、プロジェクトのビルド設定に移動します。 「プロトタイプ」を検索してください。 「Missing Function Prototypes」というオプションがあるはずです。それを無効にします。問題の特定のターゲットに対してこれを行うこともできます。
そのような関数がインラインとして定義されている場合、警告はありません。
関数がインラインでの使用に最適化されている限り、これで十分です。 http://msdn.Microsoft.com/en-us/library/1w2887zk.aspx