4

//いくつかの static const 変数が定義されています

static const uint8_t FirstData = 1;
static const uint8_t SecondData = 2;

//スイッチケース

switch (Numdata)   //Numdata is either FirstData, SecondData
{
    case FirstData:
         //some code
    case SecondData:
         //some code
}

// この "Note 1960: Violates MISRA C++ 2008 Required Rule 5-0-12, Disallowed use of non-numeric value in a case label" に対する PC-lint の苦情

問題は、なぜ PC-lint が static const メンバーを数値と見なさないのかということです。

キャスト ケース ラベルを明示的に入力することをお勧めします (これで解決するはずです)。

ケースのラベルを型キャストする必要があるのはどの型ですか? やるだけuint8_t

このリントの問題を免除する他の方法はありますか?

4

2 に答える 2

1

ルールには、「[明示的に] signed char 型と unsigned char 型は、数値の格納と使用にのみ使用するものとする」とあります。これはラベルとしての使用を禁止していると思います.lintエラーメッセージは不適切な表現です. 私はそれに何の問題もないと思います。そのコードの警告を無効にするか、必要に応じてファイル全体の警告を無効にします。

于 2014-07-08T23:54:50.710 に答える