メインコンテンツ

AUTOSAR C++14 Rule M5-2-8

An object with integer type or pointer to void type shall not be converted to an object with pointer type.

説明

ルール定義

An object with integer type or pointer to void type shall not be converted to an object with pointer type.

根拠

整数型または (void)* 型を他のポインター型に変換すると、未指定の動作につながる可能性があります。

Polyspace 実装

チェッカーは、0x00、または 0U などのゼロ定数の例外を許容します。

ポインター型のオブジェクトには、関数へのポインター型のオブジェクトが含まれます。

トラブルシューティング

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

すべて展開する

この例では、Polyspace は整数からポインターへの変換にフラグを設定します。Polyspace は、00x0、または 0U などのゼロ定数からポインターへの変換にはフラグを設定しません。このような変換はポインターのゼロ初期化と同等であり、指定された動作があります。

void foo ()
{
  void *p1;
  void *p2;
  void *p3;

  p1 = static_cast < void *>(0x0);	//Compliant
  p2 = static_cast < void *>(0U);	//Compliant
  p3 = static_cast < void *>(0);	//Compliant

  p1 = (void *) 0xDEADBEEF;	//Noncompliant
  p2 = (void *) 03;		//Noncompliant
  p3 = (void *) 12345678U;	//Noncompliant
}

チェック情報

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

バージョン履歴

R2019a で導入

すべて展開する