未命名的命名空間
您可以將未命名的命名空間宣告為全域靜態變數的宣告使用更好的替代方案。
namespace { declaration-list }
備註
需要如上所示的語法未命名的命名空間定義的行為如同它已被取代:
namespace unique { 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++
}
未命名的命名空間是靜態變數的宣告使用更好的替代文字。 它們允許變數和函式可以在整個轉譯單位中可見的還沒有看得見外部。 雖然未命名的命名空間中的項目可能會有外部連結時,它們會有效地限定到其轉譯單位是唯一的名稱,因此可以永遠不會從其他類型的轉譯單位。