11.1.6 MISRA2004チェック(ルール番号10.1)
以下の条件をすべて満たすファイルに含まれる,列挙型の変数,返値又は列挙子を用いた文に対して不要なメッセージを出力することがあります。
- | -signed_charオプションが指定されず,列挙子の値の範囲が0〜+255の範囲内にある列挙型の定義を含む
または
-signed_charオプションが指定され,列挙子の値の範囲が-128〜+255の範囲内にある列挙型の定義を含む |
- | MISRAのルール番号10.1をチェックするコンパイルオプションが指定される |
typedef enum E { E1 = 0, E2, E3 } etype;
etype func( void );
etype evar;
etype func(void)
{
evar = E1; // 10.1のメッセージが出力される
return E1; // 10.1のメッセージが出力される
}
|
【回避策】
列挙子を列挙型でキャストしてください。
typedef enum E { E1 = 0, E2, E3 } etype;
etype func( void );
etype evar;
etype func(void)
{
evar = (etype)E1; // 列挙子を列挙型でキャストする
return (etype)E1; // 列挙子を列挙型でキャストする
}
|