メインコンテンツ

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

MISRA C++:2008 Rule 8-0-1

An init-declarator-list or a member-declarator-list shall consist of a single init-declarator or member-declarator respectively.

説明

ルール定義

An init-declarator-list or a member-declarator-list shall consist of a single init-declarator or member-declarator respectively. 1

根拠

複数の宣言子からなる初期化宣言子並びは、あいまいな型代入になる可能性があり、開発者が特定の識別子に、意図されていない型を代入する原因となる場合があります。宣言ごとに 1 つの初期化宣言子を使用すると、宣言の型が明確になり、意図されていない型が代入されるリスクが軽減されます。初期化宣言子並びやメンバー宣言子並びに複数の宣言子を含めないようにしてください。

Polyspace 実装

Polyspace® は、初期化宣言子並びまたはメンバー宣言子並び内の最初の宣言子の後に続く宣言子にフラグを設定します。

トラブルシューティング

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

すべて展開する

#include <cstdint> 
#include <string> 

class exampleClass{}; 

void foo() { 


    double a, b, c; //Noncompliant 

    exampleClass objectOne, objectTwo; //Noncompliant 

    
    int32_t d; int32_t e; //Compliant 

    std::string f;  //Compliant  


}

この例では、Polyspace は複数の宣言子が含まれる初期化宣言子並びにフラグを設定します。次に例を示します。

  • double a, b, c は複数の初期化宣言子からなる初期化宣言子並びであるため非準拠で、b および c 宣言子にフラグが設定されます。

  • exampleClass objectOne, objectTwo は複数の初期化宣言子からなる初期化宣言子並びであるため非準拠で、objectTwo 宣言子にフラグが設定されます。

  • int32_t d, int32_t estd::string f は、それぞれ単一の初期化宣言子からなる初期化宣言子並びであるため、ルールに準拠しています。

チェック情報

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

バージョン履歴

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.