MISRA C:2012 Rule 22.7
The macro EOF shall only be compared with the unmodified return value from any Standard Library function capable of returning EOF
説明
ルール定義
The macro EOF shall only be compared with the unmodified return value from any Standard Library function capable of returning EOF. 1
This rule comes from MISRA C™:2012 Amendment 1.
根拠
標準ライブラリ関数から返される EOF を別の型に変換すると、この戻り値を有効な文字コードと区別できなくなる可能性があります。そのような場合、変換後の値を EOF に対してテストしても、ファイルの終わりに達したかどうかや、エラーが発生したかどうかを確実に判断することはできません。
ファイルの終わりを確実に判断するには、関数 feof() または ferror() を使用します。
Polyspace 実装
Polyspace® は、次のイベントが順番に発生する場合にこのルールの違反を報告します。
EOFを返すことができる標準ライブラリ関数が呼び出される。この関数の戻り値が別の型に変換される。この変換が複数のステップにわたって発生する可能性がある。
変換後の戻り値がマクロ
EOFと比較される。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: Resources |
| カテゴリ: 必要 |
| AGC カテゴリ: 必要 |
バージョン履歴
R2017a で導入1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.