メインコンテンツ

AUTOSAR C++14 Rule M5-0-18

>, >=, <, <= shall not be applied to objects of pointer type, except where they point to the same array.

説明

ルール定義

>, >=, <, <= shall not be applied to objects of pointer type, except where they point to the same array.

根拠

配列の要素を指す 2 つのポインターを比較する場合、結果は相対的なポインターの位置になります。ポインターが null または異なる配列の要素を指している場合、比較演算は未定義です。

配列要素を指すポインター間で >>=< または <= を使用する前に、それらのポインターが非 null であり同じ配列を指していることをチェックします。

Polyspace 実装

Polyspace® は、それぞれ異なる配列の要素を指すポインターの間での >>=<、または <= 演算子の使用にフラグを設定します。

ポインター型を使った関係演算子の使用に対する違反を表示している場合、チェッカーはキャストを無視します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

bool foo(){
	int a[10];
	int b[10];
	return (a<b);  //Noncompliant
	
}

この例では、Polyspace が、それぞれ異なる配列の要素である ab の間での比較にフラグを設定します。

チェック情報

グループ:
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入

すべて展開する