RENESAS TOOL NEWS 2006年09月16日 : 060919/tn1
MISRA C ルールチェッカ
SQMlint V.1.03 Release 00 ご使用上のお願い |
ルネサス製C用 MISRA Cルールチェッカの使用上の注意事項を連絡します。
- 列挙変数に対して、ルール43違反メッセージが出力される場合の注意事項
- 該当製品
MISRA Cルールチェッカ
SQMlint V.1.03 Release 00
- 内容
列挙変数に対して、出るはずのない以下いずれかのルール43(情報の損失が起きる 暗黙の型変換)違反メッセージが出力されることがあります。
| (1) |
|
[MISRA(43) Complaining] information loss conversion
(from 'enum (xx)' to 'signed int') in yy operation
|
| (2) |
|
[MISRA(43) Complaining] information loss conversion
(from 'signed int' to 'enum (xx)') in yy operation |
xx: 列挙変数のタグ名
yy: 演算子
- 発生条件
以下2点の条件をすべて満たす場合に発生します。
| (1) |
|
MISRA Cルール43に対する検査を有効にするオプションを選択している。
オプション名はSQMlintと組み合わせて使用するコンパイラによって異なります。 |
| (2) |
|
二項演算子のオペランドのどちらか一方、あるいは両方に列挙変数を使用 している。 |
ソース例
--------------------------------------------------------------------
enum E_TAG { E1, E2, E3 };
void func(enum E_TAG e)
{
if(e == E1){ /* 発生条件(2) */
...
}
...
}
--------------------------------------------------------------------
メッセージ例
[MISRA(43) Complaining] information loss conversion
(from 'enum (E_TAG)' to 'signed int') in == operation
- 回避策
発生条件に該当する箇所に対して出力された、2項のルール43違反メッセージは 無視してください。
- 恒久対策
次期バージョンで改修する予定です。