Sdílet prostřednictvím


Nepojmenované obory názvů

Nepojmenované obory názvů lze deklarovat jako výhodnější alternativu k deklaracím globálních statických proměnných.

namespace { declaration-list }

Poznámky

Definice nepojmenovaného oboru názvů se syntaxí výše se chová, jako by byla nahrazena kódem

namespace unique { declaration-list }

using namespace unique;

Každý nepojmenovaný obor názvů má identifikátor přiřazený a udržovaný programem, zde reprezentovaný symbolem unique, který se liší od všech identifikátorů v celém programu.Příklad:

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

Nepojmenované obory názvů jsou výhodnější náhražkou statických deklarací proměnných.Umožňují proměnným a funkcím být viditelné v rámci celé jednotky překladu, nikoli však mimo ni.Ačkoli entity v nepojmenovaném oboru názvů mohou mít vnější propojení, jsou efektivně kvalifikovány názvem jedinečným pro jejich jednotku překladu, proto z žádné jiné jednotky nemohou být viděny.

Viz také

Referenční dokumentace

Obory názvů (C++)