C and C++


LANG.STRUCT.DEF.MULTIEXT : 複数の外部定義

要旨

外部結合の識別子に対して、複数の定義が存在します。

プロパティ

クラス名 Multiple External Definitions
日本語クラス名 複数の外部定義
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DEF.MULTIEXT
カテゴリー
MisraC2023 MisraC2023:8.6 An identifier with external linkage shall have exactly one external definition
Misra2012 Misra2012:8.6 An identifier with external linkage shall have exactly one external definition
Misra2004 Misra2004:8.9 An identifier with external linkage shall have exactly one external definition
AUTOSARC++14 AUTOSARC++14:M3-2-2 The One Definition Rule shall not be violated.
  AUTOSARC++14:M3-2-4 An identifier with external linkage shall have exactly one definition.
MisraC++2008 MisraC++2008:3-2-2 The One Definition Rule shall not be violated.
  MisraC++2008:3-2-4 An identifier with external linkage shall have exactly one definition.
MisraC++2023 MisraC++2023:6.2.1 The one-definition rule shall not be violated
  MisraC++2023:6.2.3 The source code used to implement an entity shall appear only once
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
INCREMENTAL_BUILD = No
WARNING_FILTER += allow class="Multiple External Definitions"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

解析プロジェクトにはファイル LANG.STRUCT.DEF.MULTIEXT.cLANG.STRUCT.DEF.MULTIEXT.b.cLANG.STRUCT.DEF.MULTIEXT.c.c があるものとします。

/* LANG.STRUCT.DEF.MULTIEXT.b.c */

extern int i_onedef;
extern int i_twodef;
extern int f_onedef( int i);
extern int f_twodef( int i);
/* LANG.STRUCT.DEF.MULTIEXT.b.c */

int i_twodef = 3;
int f_twodef( int i){return i;}
/* LANG.STRUCT.DEF.MULTIEXT.c.c */

int i_onedef = 7;                                       /* only definition of i_onedef */
int i_twodef = 8;               /* 'Multiple External Definitions'  warning issued here */ 
int f_onedef( int i){return i;}                         /* only definition of f_onedef() */
int f_twodef( int i){return i;} /* 'Multiple External Definitions' warning issued here
                                 * (even though the two definitions are identical) */

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。