定数と別の定数の潜在的な比較
解説
この警告は、冗長コードである別の定数と定数を比較する可能性を示します。 意図がコードに正しくキャプチャされていることを確認する必要があります。 場合によっては、テスト条件を簡略化して同じ結果を得る場合があります。
コード分析名: 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
}