命名空间声明

命名空间 声明标识并分配一个唯一名称。用户声明的命名空间。

namespace identifier

备注

此命名空间在大过程和库中用于解析名称冲突问题。程序员可以使用命名空间开发新的软件组件和库,而不会导致与现有元素的命名冲突。

例如:

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

命名空间中定义的语法是:

namespace identifier
{
   [ declaration-list ]
}

命名空间定义 可在另一命名 空间定义内嵌套。每个命名空间 定义 必须出现在文件范围内或紧接着在另一命名 空间定义内

例如:

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

与其他声明区域,命名空间的定义都可在一个翻译单元的几节。

// 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()
{
}

当命名空间在其初始定义之后继续,,延续时调用 扩展命名空间定义。该命名空间的原始定义称为的基元命名空间 定义

此表示法用法可能会相当麻烦的更长名称或在大过程。使用声明使用指令命名空间别名 提供更简单的方法引用命名空间的成员。

必须由在大括号内包含的命名空间主体附带 命名空间 说明,它是需要新命名空间、未命名的命名空间或一个扩展命名空间定义,。语句

namespace X;

是语法错误。语句

namespace X{};

不是语法错误,,而是无意义的。

有关背景信息,请参见 命名空间

在基元命名空间中定义的标识符必须是唯一的。它使用的声明性区域。该标识符是命名空间的名称和使用引用它的成员。

命名空间定义的声明区域是主体。在大括号 () 必须将该主体并可以包含变量、函数、对象、模板和嵌套的命名空间声明或定义。在 声明列表的 说明被视为命名空间的成员。每个命名空间成员的名称自动限定名为其命名空间和 范围解析运算符

请参见

参考

命名空间(C++)

C++关键字

未命名的命名空间