C and C++


LANG.STRUCT.DECL.ANH : ヘッダファイル内における無名名前空間の定義

要旨

ヘッダファイル内で、無名名前空間(匿名名前空間と呼ばれることも有り)が定義されています。

プロパティ

クラス名 Anonymous Namespace in Header File
日本語クラス名 ヘッダファイル内における無名名前空間の定義
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.DECL.ANH
カテゴリー
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
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Anonymous Namespace in Header File"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

// 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;
}

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

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