C and C++


LANG.STRUCT.DEF.FDH : ヘッダファイル内の関数定義

要旨

関数定義が(コンパイルユニット 内で#includeのファイルとして定義されている)ヘッダファイル内に存在します。

(設定パラメータ SYSTEM_INCLUDE_PATHS で設定されている) システムヘッダはこのワーニングクラスのチェックに含まれません。

プロパティ

クラス名 Function Defined in Header File
日本語クラス名 ヘッダファイル内の関数定義
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DEF.FDH
カテゴリー
Misra2004 Misra2004:8.5 There shall be no definitions of objects or functions in a header file
AUTOSARC++14 AUTOSARC++14:A3-1-1 It shall be possible to include any header file in multiple translation units without violating the One Definition Rule.
MisraC++2008 MisraC++2008:3-1-1 It shall be possible to include any header file in multiple translation units without violating the One Definition Rule.
MisraC++2023 MisraC++2023:6.2.1 The one-definition rule shall not be violated
  MisraC++2023:6.2.4 A header file shall not contain definitions of functions or objects that are non-inline and have external linkage
CERT-CPP CERT-CPP:DCL60-CPP Obey the one-definition rule
JSF++ JSF++:39 Header files (*.h) will not contain non-const variable definitions or function definitions.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Function Defined in Header File"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

/* LANG.STRUCT.DEF.FDH.c */

#include "LANG.STRUCT.DEF.FDH.h"
/* LANG.STRUCT.DEF.FDH.h */

int f_decl(int i);                                   /* ok: non-defining declaration */

int f_def(int i){return i;} /* 'Function Defined in Header File' warning issued here */

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

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