Udostępnij za pośrednictwem


Obszary nazw bez nazwy

Bez nazwy obszaru nazw można zadeklarować superior alternatywne w stosunku do użytku globalnego deklaracji zmiennej statycznej.

namespace { declaration-list }

Uwagi

Definicję nazwy obszaru nazw, posiadające pokazaną wyżej składnią zachowuje się tak, jakby zostały zastąpione przez:

namespace unique { declaration-list }

za pomocą obszaru nazw unikatowy;

Każdej nazwy obszaru nazw ma identyfikator przypisany i utrzymane przez program i reprezentowana przez unikatowy, który różni się od innych identyfikatorów w całym programie.Na przykład:

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

Nienazwane obszary nazw są najwyższej zastępujące statyczne deklaracji zmiennych.Pozwalają one zmienne i funkcje być widoczne w jednostce tłumaczenie całego jeszcze nie widocznych zewnętrznie.Mimo, że podmioty w obszarze nazw nienazwane może mieć powiązania zewnętrznych, są skutecznie kwalifikowana nazwa unikatowa do ich tłumaczenie jednostki i dlatego nigdy nie wynika z innych jednostek tłumaczenia.

Zobacz też

Informacje

Obszary nazw (C++)