0
最近Clangが迷惑な警告を実装しました。 #pragma clang diagnostic ignored
を使用して無効にすると、古いバージョンのClangでは「不明な警告グループ」という警告が表示されます。プラグマを使用して警告が表示されないようにする
警告が実装されているかどうかをテストする方法はありますか?
最近Clangが迷惑な警告を実装しました。 #pragma clang diagnostic ignored
を使用して無効にすると、古いバージョンのClangでは「不明な警告グループ」という警告が表示されます。プラグマを使用して警告が表示されないようにする
警告が実装されているかどうかをテストする方法はありますか?
最近のバージョンのClangは、__has_warning
機能チェックマクロを実装しています。クラン警告フラグのいずれか一方のみのプールとGCC(いないその逆)をエミュレートするので、それは機能チェックイントロスペクションを使用して、GCCに対してコーディングすることは合理的だ:
#if __GNUC__ && defined(__has_warning)
# if __has_warning("-Wwhatever")
# define SUPPRESSING
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wwhatever"
# endif
#endif
// Code that trips warning
#ifdef SUPPRESSING
# undef SUPPRESSING
# pragma GCC diagnostic pop
#endif
これは面倒copypastaのビットです。 __has_warning
と#pragma
は、引数としてマクロを受け付けませんので
#define SUPPRESS_WARNING "-Wwhatever"
#include "suppress_warning.h"
// Code that trips warning
#include "unsuppress_warning.h"
suppress_warning.h
は、少しトリッキーです:それはこのように、包含ファイルを使用して回避することができます。したがって、GithubまたはWandbox demoから取得してください。
@ NathanOliver 'defined(__has_warning)'は、このようなコンパイラでは 'false'と評価されます。 – Potatoswatter
ちょうどそれを見た。コメントは撤回しました – NathanOliver
@NathanOliver大丈夫です:)私は、懸念が再び起こったことに対して、私の応答をお守りとして残します。 – Potatoswatter