命名空间声明
命名空间 声明标识并分配一个唯一名称。用户声明的命名空间。
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{};
不是语法错误,,而是无意义的。
有关背景信息,请参见 命名空间。
在基元命名空间中定义的标识符必须是唯一的。它使用的声明性区域。该标识符是命名空间的名称和使用引用它的成员。
命名空间定义的声明区域是主体。在大括号 () 必须将该主体并可以包含变量、函数、对象、模板和嵌套的命名空间声明或定义。在 声明列表的 说明被视为命名空间的成员。每个命名空间成员的名称自动限定名为其命名空间和 范围解析运算符。