MISRA C++:2023 Rule 8.9.1
The built-in relational operators >, >=, < and <= shall not be applied to objects of pointer type, except where they point to elements of the same array
R2024b 以降
説明
ルール定義
The built-in relational operators >, >=, < and <= shall not be applied to objects of pointer type, except where they point to elements of the same array. 1
根拠
配列の要素を指す 2 つのポインターを比較する場合、結果は相対的なポインターの位置になります。ポインターが null または異なる配列の要素を指している場合、比較演算は未定義です。
配列要素を指すポインター間で >、>=、< または <= を使用する前に、それらのポインターが非 null であり同じ配列を指していることをチェックします。
Polyspace 実装
Polyspace® は、それぞれ異なる配列の要素を指すポインターの間での >、>=、<、または <= 演算子の使用にフラグを設定します。
ポインター型を使った関係演算子の使用に対する違反を表示している場合、チェッカーはキャストを無視します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Expressions |
| カテゴリ: Required |
バージョン履歴
R2024b で導入
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.