web-dev-qa-db-ja.com

Xcodeの警告「関数の前のプロトタイプがない...」を処理する方法は?

この警告は、一部のサードパーティライブラリで大量に発生しています。

コードを変更せずにそれを処理する方法はありますか(警告を無視するなど)?

コードを修正して修正する必要がある場合、どうすればよいですか?

警告を引き起こしているコードブロックの1つを次に示します。

BOOL FBIsDeviceIPad() {
 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
   return YES;
  }
 #endif
  return NO;
}
41

通常、このような警告では、ファイルの先頭に関数プロトタイプを定義できます。たとえば、次のようになります。

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;
}
80
appmattus

Xcode4で、プロジェクトのビルド設定に移動します。 「プロトタイプ」を検索してください。 「Missing Function Prototypes」というオプションがあるはずです。それを無効にします。問題の特定のターゲットに対してこれを行うこともできます。

29
bosmacs

そのような関数がインラインとして定義されている場合、警告はありません。

関数がインラインでの使用に最適化されている限り、これで十分です。 http://msdn.Microsoft.com/en-us/library/1w2887zk.aspx

1
thomsky