web-dev-qa-db-ja.com

Clang(Xcode):-Weverythingで開始し、特定の警告を手動で無効にします

コンパイラに-Weverythingを使用して、考えられるすべての警告をキャッチするのが好きですが、修正したくない警告が表示されることがあります。発生した特定の警告を手動で無効にするにはどうすればよいですか?

28
7cows

-Wno-XYZを使用して、個々の警告を無効にすることができます。XYZは、無効にする警告機能の名前です。

31
user529758

XCode

XCode 5では、ビルドする必要がありました。次に、問題を右クリックして[ログで表示]を選択し、[中央ペイン]タブを[すべて]に設定して、問題をログに表示します。

次に、右側の「ハンバーガー」アイコンをクリックして下にスクロールすると、最終的に警告の正確な説明が表示されます。

/.../SettingsViewController.m:91:58: warning: creating selector for nonexistent method 'setSegueIdentifier:' [-Wselector]
    [segue.destinationViewController performSelector:@selector(setSegueIdentifier:)

だから私の場合、次のことが仕事をします。

#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wselector"
...
#pragma clang diagnostic pop
16
max

私はちょうどすべてのClang警告とそれらを無効にするフラグをリストしているサイトにぶつかりました(#pragma clang diagnostic ignored "-Wxyz"を使用して):

http://goo.gl/hwwIUa (アクセスすると、URLを短くした理由がわかります)。

4
Ohad Schneider

ビルド設定を更新して個々の警告を有効/無効にする方法を知っていて、コードで警告を無効にしたいのではないかと思います。次に例を示します。

#ifdef TESTFLIGHT_USERTRACKING

#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#pragma clang diagnostic ignored "-Wdeprecated-implementations"

[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];

#pragma clang diagnostic pop

#endif
1
GayleDDS