C and C++


LANG.STRUCT.DEF.NOEXT : 外部定義の欠如

要旨

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

プロパティ

クラス名 Missing External Definition
日本語クラス名 外部定義の欠如
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DEF.NOEXT
カテゴリー
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
対応言語 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 Definition"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

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

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

int i_def=5;

int f_def( int i){return i;}
/* LANG.STRUCT.DEF.NOEXT.b.c */

extern int i_def;                               /* defined in LANG.STRUCT.DEF.NOEXT.a.c */

extern int i_nodef;         /* 'Missing External Definition' warning issued here */

extern int f_def( int i);                       /* defined in LANG.STRUCT.DEF.NOEXT.a.c */

extern int f_nodef( int i); /* 'Missing External Definition' warning issued here */

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

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