メインコンテンツ

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

MISRA C:2023 Rule 8.3

All declarations of an object or function shall use the same names and type qualifiers

R2024a 以降

説明

ルール定義

All declarations of an object or function shall use the same names and type qualifiers 1 .

根拠

同一のオブジェクトまたは関数の宣言全体で、常にパラメーター名と型を使用すると、より厳密な型指定となります。すべての宣言で同じ関数インターフェイスが使用されていることを容易にチェックできるようになります。

例外:

  • 同じ基本型の互換性のあるバージョンの使用は、このルールに違反しません。たとえば、signedintsigned int は互換的に使用できます。

  • 名前なし関数パラメーターの使用は、このルールに違反しません。たとえば、宣言 void foo(int a) は宣言 void foo(int) と互換的に使用できます。

Polyspace 実装

ルール チェッカーは、パラメーター名またはデータ型が、複数の宣言の間または宣言と定義の間で異なっている状況を検出します。チェッカーは、すべての翻訳単位内の宣言を考慮し、コンパイラによって検出されない可能性のある問題にフラグを設定します。

トラブルシューティング

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

すべて展開する

extern int div (int num, int den);

int div(int den, int num) { /* Non compliant */
    return(num/den);
}

この例では、宣言と定義内のパラメーター名が入れ替わっているため、ルールに違反しています。

typedef unsigned short width;
typedef unsigned short height;
typedef unsigned int area;

extern area calculate(width w, height h);

area calculate(width w, width h) { /* Non compliant */
    return w*h;
}

この例では、関数 calculate の 2 番目の引数が次のデータ型であるため、ルールに違反しています。

  • 宣言内では height

  • 定義内では width

height および width の潜在型が同一である場合も、ルールに違反しています。

チェック情報

グループ: 宣言と定義
カテゴリ: 必要
AGC カテゴリ: 必要

バージョン履歴

R2024a で導入


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.