Udostępnij za pośrednictwem


przestrzeń nazw — deklaracja

Deklaracja namespace identyfikuje i przypisuje unikatową nazwę do przestrzeni nazw zadeklarowanej przez użytkownika.

namespace identifier

Uwagi

Takie przestrzenie nazw są używane do rozwiązywania problemu kolizji nazw w dużych programach i bibliotekach.Programiści mogą używać przestrzeni nazw, aby projektować nowe składniki oprogramowania i biblioteki bez powodowania konfliktów nazw z istniejącymi komponentami.

Na przykład:

// namespace_declaration1.cpp
namespace X
{
   int i;
   double j;
}
int main()
{
   X::i++;
}

Składnia definicji przestrzeni nazw jest następująca:

namespace identifier
{
   [ declaration-list ]
}

Namespace-definition może być zagnieżdżona w innej namespace-definition.Każda namespace-definition musi pojawić się w zakresie pliku lub bezpośrednio w innej namespace-definition.

Na przykład:

// namespace_declaration2.cpp
// C2870 expected
namespace A
{
   int j = 3;
   int f(int k);
}

namespace Outer
{
   int n = 6;
   int func(int num);

   namespace Inner
   {
      float f = 9.993;
   }
}

int main()
{
   namespace local   // C2870: not at global scope
   {
   }
}

W odróżnieniu od innych regionów deklaratywnych, definicja przestrzeni nazw może być podzielona na kilka części pojedynczej jednostki tłumaczenia.

// namespace_declaration3.cpp
namespace A
{
   // declare namespace A variables
   int i;
   int j;
}

namespace B
{
}

namespace A
{
   // declare namespace A functions
   void func(void);
   int int_func(int i);
}

int main()
{
}

Kiedy przestrzeń nazw jest w ten sposób kontynuowana po początkowej definicji, kontynuacja jest nazywana rozszerzeniem definicji przestrzeni nazw. Oryginalna definicja tej przestrzeni nazw jest nazywana oryginalną definicją przestrzeni nazw.

Sposób użycia tej notacji może być kłopotliwy przy dłuższych nazwach lub w dużych programach.Deklaracja using, dyrektywa using i aliasy przestrzeni nazw dostarczają prostsze sposoby odwoływania się do elementów członkowskich przestrzeni nazw.

Deklaracji przestrzeni nazw, niezależnie od tego czy obejmuje ona nową przestrzeń nazw, nienazwaną przestrzeń nazw, czy rozszerzenie definicji przestrzeni nazw, musi towarzyszyć treść ujęta w nawiasy klamrowe.Instrukcja

namespace X;

jest błędem składniowym.Instrukcja

namespace X{};

nie jest błędem składniowym, ale jest pozbawiona znaczenia.

Aby uzyskać informacje dotyczące tła zagadnienia, zobacz Przestrzenie nazw.

Identyfikator w oryginalnej definicji przestrzeni nazw musi być unikatowy w regionie deklaracyjnym, w którym jest używany.Identyfikator jest nazwą przestrzeni nazw i jest używany, aby odwoływać się do jej elementów członkowskich.

Region deklaracyjny definicji przestrzeni nazw jest jej treścią.Treść musi być ujęta w nawiasy klamrowe ({ }) i może zawierać deklaracje lub definicje zmiennych, funkcji, obiektów, szablonów i zagnieżdżonych przestrzeni nazw.Deklaracje w declaration-list są określane jako elementy członkowskie przestrzeni nazw.Nazwa każdego elementu członkowskiego przestrzeni nazw jest automatycznie kwalifikowana po nazwie przestrzeni nazw i operatorze rozwiązywania zakresu.

Zobacz też

Informacje

Przestrzenie nazw (C++)

Słowa kluczowe języka C++

Nienazwane przestrzenie nazw