C and C++


LANG.STRUCT.DECL.MULTIEXT : 複数の外部宣言

要旨

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

プロパティ

クラス名 Multiple External Declarations
日本語クラス名 複数の外部宣言
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DECL.MULTIEXT
カテゴリー
MisraC2023 MisraC2023:8.5 An external object or function shall be declared once in one and only one file
Misra2012 Misra2012:8.5 An external object or function shall be declared once in one and only one file
Misra2004 Misra2004:8.8 An external object or function shall be declared in one and only one file
AUTOSARC++14 AUTOSARC++14:M3-2-3 A type, object or function that is used in multiple translation units shall be declared in one and only one file.
MisraC++2008 MisraC++2008:3-2-3 A type, object or function that is used in multiple translation units shall be declared in one and only one file.
JSF++ JSF++:40 Every implementation file shall include the header files that uniquely define the inline functions, types, and templates used.
  JSF++:139 External objects will not be declared in more than one file.
対応言語 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 Declarations"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

/* LANG.STRUCT.DECL.MULTIEXT.a.c */
        
int i_oneext=5;  

extern int i_twoext;

int f_oneext( int i){return i;}

extern int f_twoext( int i);
/* LANG.STRUCT.DECL.MULTIEXT.b.c */

extern int i_oneext;                           /* defined in LANG.STRUCT.DECL.MULTIEXT.a.c */

extern int i_twoext;         /* 'Multiple External Declarations' warning issued here:
                              * also declared extern in LANG.STRUCT.DECL.MULTIEXT.a.c,
                              * but not defined there.
                              */

extern int f_oneext( int i);                   /* defined in LANG.STRUCT.DECL.MULTIEXT.a.c */

extern int f_twoext( int i); /* 'Multiple External Declarations' warning issued here:
                              * also declared extern in LANG.STRUCT.DECL.MULTIEXT.a.c,
                              * but not defined there.
                              */

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

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