メインコンテンツ

AUTOSAR C++14 Rule M3-2-4

An identifier with external linkage shall have exactly one definition

説明

このチェッカーは、既定の Polyspace® as You Code 解析では非アクティブにされますPolyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください

ルール定義

An identifier with external linkage shall have exactly one definition

根拠

識別子に複数の定義がある、または定義が存在しない場合、未定義の動作につながる可能性があります。

Polyspace 実装

このチェッカーは、次のような未使用のコードでは起動されません。

  • インスタンス化されていないテンプレート

  • 呼び出されない関数 static または extern

  • 呼び出されない未定義のローカル関数

  • 未使用の型および変数

トラブルシューティング

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

すべて展開する

次の例では次の 2 つのファイルを使用しています。

  • file1.cpp:

    
    typedef signed   int          int32_t;
    
    namespace NS {
    	extern int32_t a;  
    
    	void foo(){
    		a = 0;
    		
    	}
    }; 
  • file2.cpp:

    
    typedef signed   int          int32_t;
    typedef signed   long long         int64_t;
    
    namespace NS {
    	extern int64_t a; //Noncompliant
    	void bar(){
    		++a;
    		
    	}
    };

同じ識別子 a が両方のファイルで定義されています。

チェック情報

グループ: 基本概念
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入