C and C++


LANG.STRUCT.DECL.FNEST : Nested Function Declaration

Summary

A function declaration occurs inside a function definition.

Properties

Class Name Nested Function Declaration
Significance style
Mnemonic LANG.STRUCT.DECL.FNEST
Categories
Misra2004 Misra2004:8.6 Functions shall be declared at file scope
AUTOSARC++14 AUTOSARC++14:M3-1-2 Functions shall not be declared at block scope.
MisraC++2008 MisraC++2008:3-1-2 Functions shall not be declared at block scope.
MisraC++2023 MisraC++2023:6.0.1 Block scope declarations shall not be visually ambiguous
CWE CWE:710 Improper Adherence to Coding Standards
CERT-CPP CERT-CPP:DCL53-CPP Do not write syntactically ambiguous declarations
JSF++ JSF++:107 Functions shall always be declared at file scope.
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="Nested Function Declaration"
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

int lang_struct_decl_fnest(int i){
    int g(int x); /* 'Nested Function Declaration' warning issued here */
    return g(i);
}

Relevant Configuration File Parameters

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