最近のXcode5.1アップデートでは、コードベースに多数の新しい警告が表示されます-
これは明らかに、 がregister
ストレージクラス指定子の使用について警告 するclangの更新バージョンに関連しています。 C++ 11ソースは としてC++ 11 で非推奨になりました:
/Users/me/Documents/Sources/boost/boost/log/attributes/attribute_set.hpp:288:9: 'register' storage class specifier is deprecated
ここで、変更できないコードの警告を抑制したいと思います-上記の例のBOOSTソースのように。
警告をオンにするコンパイラフラグを見つけることができました(-Wdeprecated-register
)しかし、Xcode設定からの警告を無効にする反対の方法はありますか?
一般に、先頭にno-
オプションにするとオフになります。したがって、-Wdeprecated-register
は警告を有効にし、次に-Wno-deprecated-register
はそれを無効にする必要があります。
または、多くのコンパイラでは、コードでプラグマ(または同様のもの)を使用して、特定のヘッダーを含めながら警告を無効にし、独自のコードでは有効のままにしておくことができます。それらはコンパイラ固有です。 Clangの場合、それは次のようなものです
#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wdeprecated-register"
#include "dodgy.hpp"
#pragma clang diagnostic pop
(GCCの場合、プラグマは同じですが、clang
をGCC
に置き換えるだけです。他のコンパイラについては知りません。)
警告を抑制することは、ここでは間違ったツールです。使用 -isystem
自分のものではないコードを含めるとフラグが立てられ、そのコードに警告は生成されません。
これも機能します
#if __cplusplus > 199711L
#define register // Deprecated in C++11.
#endif // #if __cplusplus > 199711L