メインコンテンツ

MISRA C++:2008 Rule 5-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. 1

根拠

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

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

Polyspace 実装

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

トラブルシューティング

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

すべて展開する

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

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

チェック情報

グループ: Expressions
カテゴリ: 必要

バージョン履歴

R2013b で導入

すべて展開する


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.