メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MISRA C:2012 Rule 5.5

Identifiers shall be distinct from macro names

説明

ルール定義

Identifiers shall be distinct from macro names 1 .

根拠

ルールでは、処理の前にのみ存在するマクロ名は、前処理後にも存在する識別子名と異なっていなければなりません。マクロ名と識別子を区別することで、混乱を回避できます。

Polyspace 実装

Polyspace® は最初の 63 文字の間に相違点があれば 2 つの名前を別個であると見なします。C90 では、相違点は最初の 31 文字の間に存在しなければなりません。C90 ルール チェックを使用するには、オプション [C 標準バージョン] (-c-version) で値 c90 を使用します。比較する文字数は、オプション -code-behavior-specifications を使用して変更できます。-code-behavior-specifications を参照してください。

レポート内の追加のメッセージ

Identifier XX has same significant characters as macro YY.

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する

#define Sum_1(x, y) ( ( x ) + ( y ) )
short Sum_1;                    /* Non-compliant */

#define Sum_2(x, y) ( ( x ) + ( y ) )
short x = Sum_2 ( 1, 2 );       /* Compliant */

この例では、Sum_1 が識別子とマクロの両方の名前となっています。Sum_2 はマクロとしてのみ使用されます。


#define low_pressure_turbine_temperature_1 lp_tb_temp_1
static int low_pressure_turbine_temperature_2;   /* Non-compliant  */

この例では、識別子 low_pressure_turbine_temperature_2 の最初の 31 文字が、先行するマクロ low_pressure_turbine_temperature_1 の文字と同じです。

チェック情報

グループ: 識別子
カテゴリ: 必要
AGC カテゴリ: 必要

バージョン履歴

R2014b で導入


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.