C and C++


LANG.STRUCT.DEF.FDH : Function Defined in Header File

Summary

A function definition is present in a header file (defined as a source file that is #included in a compilation unit).

Exception: functions that are instantiations of templates will not trigger warnings of this class.

System headers (as determined by the setting of configuration parameter SYSTEM_INCLUDE_PATHS) are not included in checks for this warning class.

Properties

Class Name Function Defined in Header File
Significance style
Mnemonic LANG.STRUCT.DEF.FDH
Categories
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.
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Function Defined in Header File"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

/* 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 */

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.