メインコンテンツ

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

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
}

チェック情報

グループ: 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.