C and C++


LANG.STRUCT.DECL.NOEXT : 外部宣言の欠如

要旨

An identifier with external linkage has no associated non-defining extern declaration.

プロパティ

クラス名 Missing External Declaration
日本語クラス名 外部宣言の欠如
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DECL.NOEXT
カテゴリー
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.
CERT-C CERT-C:DCL36-C Do not declare an identifier with conflicting linkage classifications
JSF++ JSF++:40 Every implementation file shall include the header files that uniquely define the inline functions, types, and templates used.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
INCREMENTAL_BUILD = No
WARNING_FILTER += allow class="Missing External Declaration"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

解析プロジェクトにはファイル fileA.cfileB.c があるものとします。

/* LANG.STRUCT.DECL.NOEXT.a.c */

extern int i_def;
extern int f_def(int i);
/* LANG.STRUCT.DECL.NOEXT.b.c */

int i_nodef = 3;               /* 'Missing External Declaration' warning issued here */
int i_def = 4;                 /* declared extern in fileA.c */
int f_nodef(int i){return i;}  /* 'Missing External Declaration' warning issued here */
int f_def(int i){return i;}    /* declared extern in fileA.c n*/

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

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