無名の名前空間
グローバル静的変数の宣言を使用して優れた代わりに無名の名前空間を宣言できます。
namespace { declaration-list }
解説
上の構文を表示する無名の名前空間定義はによって置き換えられるように動作します :
名前空間 一意の { *宣言リスト *}
一意の 名前空間を使用します ;
それぞれの無名の名前空間に次に割り当てプログラムによって管理されプログラム全体の他のすべての識別子とは異なる 一意 識別子によって表されるがあります。次に例を示します。
// unnamed_namespaces.cpp
// C2872 expected
namespace { int i; } // unique::i
void f() { i++; } // unique::i++
namespace A {
namespace {
int i; // A::unique::i
int j; // A::unique::j
}
}
using namespace A;
void h()
{
i++; // C2872: unique::i or A::unique::i
A::i++; // A::unique::i++
j++; // A::unique::j++
}
無名の名前空間は静的変数の宣言の優れた代わるものです。これらは変数と関数についての翻訳単位内に表示されるが表示されないように外部にします。したがって無名の名前空間のエンティティは外部リンケージを持つこともありますが翻訳単位に一意の名前に基づいて効率的に変更され他の翻訳単位でも確認できます。