Безымянные пространства имен
Можно объявить пространство имен безымянное в виде основной вариант для использования глобальных объявлений статической переменной.
namespace { declaration-list }
Заметки
Анонимное определение пространства имен, имеющих синтаксис отображаться выше ведет себя так, как если бы он был заменен следующим образом:
пространство имен unique { объявление-список }
использование пространств имен unique;
Каждое пространство имен содержит безымянное идентификатор, присвоенный и поддерживаемый приложениями и представленный здесь by unique, отличается от всех других идентификаторов во всей программе.Примеры.
// 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++
}
Безымянные пространства имен основной замена для статического объявления переменных.Они позволяют переменные и функции, чтобы быть видны внутри всей единица преобразования, но не видны ней.Хотя сущности в анонимном пространстве имен могут иметь внешний переключатель, они эффективно определяются именем, уникального для их единицы измерения перевода и поэтому могут не быть видны в любой другой единицы измерения.