C and C++


LANG.STRUCT.DECL.ANH : Anonymous Namespace in Header File

Summary

An anonymous namespace is defined in a header file.

Properties

Class Name Anonymous Namespace in Header File
Significance style
Mnemonic LANG.STRUCT.DECL.ANH
Categories
AUTOSARC++14 AUTOSARC++14:M7-3-3 There shall be no unnamed namespaces in header files.
MisraC++2008 MisraC++2008:7-3-3 There shall be no unnamed namespaces in header files.
MisraC++2023 MisraC++2023:10.3.1 There shall be no unnamed namespaces in header files
CERT-CPP CERT-CPP:DCL59-CPP Do not define an unnamed namespace in a header file
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="Anonymous Namespace 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.DECL.ANH.cpp

#include "LANG.STRUCT.DECL.ANH.hpp"

namespace                          // ok: not in a header file
{
  int z=1;
}

int f(void){ return z + MYNS::y;}
// LANG.STRUCT.DECL.hpp

namespace        // 'Anonymous Namespace in Header File' warning issued here 
{
  int x=2;
}

namespace MYNS                     // ok : not anonymous
{
  int y=x;
}

Relevant Configuration File Parameters

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