次の方法で共有


警告 C6326

定数と別の定数の潜在的な比較

解説

この警告は、冗長コードである別の定数と定数を比較する可能性を示します。 意図がコードに正しくキャプチャされていることを確認する必要があります。 場合によっては、テスト条件を簡略化して同じ結果を得る場合があります。

コード分析名: CONST_CONST_COMP

次のコードでは、2 つの定数が比較され、この警告が生成されます。

#define LEVEL
const int STD_LEVEL = 5;

const int value =
#ifdef LEVEL
  10;
#else
  5;
#endif

void f()
{
  if( value > STD_LEVEL)
  {
    // code...
  }
  else
  {
    // code...
  }
}

次のコードは、C++17 if constexpr を使用してこの警告を修正する 1 つの方法を示しています。

#define LEVEL
const int STD_LEVEL = 5;

const int value =
#ifdef LEVEL
  10;
#else
  5;
#endif

void f()
{
  if constexpr( value > STD_LEVEL)
  {
    // code...
  }
  else
  {
    // code...
  }

次のコードは、#ifdef ステートメントを使用して、C++17 が使用できない場合に実行するコードを決定することで、この警告を修正する 1 つの方法を示しています。

#define LEVEL
const int STD_LEVEL = 5;

const int value =
#ifdef LEVEL
  10;
#else
  5;
#endif

void f ()
{
#ifdef LEVEL
  {
    // code...
  }
#else
  {
    // code...
  }
#endif
}