Безымянные пространства имен

Можно объявить пространство имен безымянное в виде основной вариант для использования глобальных объявлений статической переменной.

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++
}

Безымянные пространства имен основной замена для статического объявления переменных.Они позволяют переменные и функции, чтобы быть видны внутри всей единица преобразования, но не видны ней.Хотя сущности в анонимном пространстве имен могут иметь внешний переключатель, они эффективно определяются именем, уникального для их единицы измерения перевода и поэтому могут не быть видны в любой другой единицы измерения.

См. также

Ссылки

Пространства имен (C++)