命名空间

编译器设置 “命名空间”区分用于在不同类型的标识符之间项目。 在每个命名空间中的名称必须是唯一的避免冲突,但是,一个相同的名称可显示在多个命名空间。 这意味着可以为两个或多个不同项目使用同一标识符,因此,在项目不同的命名空间条件下。 编译器能够解析引用基于标识符的语法上下文程序中的。

备注

不要将命名空间混淆的有限 C 概念 C++ “空间”功能。有关在 C++语言的命名空间引用 有关更多信息。

此列表描述用于 C. 的命名空间。

  • 语句标签
    命名的语句标签是语句的一部分。 语句标签的定义始终有冒号,但不是 用例 标签的部分。 对语句标签的使用总是紧跟在关键字 goto。 语句标签不必与不同其他名称或在其他功能的标签名称。

  • 结构、联合和枚举标记
    这些标记是结构的一部分,联合和枚举类型说明符,因此,如果有,总是紧跟在保留字 struct、 联合或 enum。 标记名称必须与不同其他结构、枚举或联合用相同的可见性。

  • 结构或联合的成员
    成员名称在命名空间分配与每个结构和联合类型。 即同一标识符可以同时处于任意数量的结构或联合的组件名称。 组件名称的定义在结构或联合类型说明符中始终出现。 对组件命名的使用总是紧跟在成员选择运算符 (– AMP_GT.)。 成员的名称必须是唯一的。结构或联合中,,但不一定与不同程序中的其他名称,包括不同的结构和联合的成员的名称或结构的名称。

  • 普通标识符
    其他名称就包括变量,函数的命名空间 (包括形参和局部变量) 和枚举常量。 标识符名称嵌套可见性,因此,您可以重新定义这些块中。

  • Typedef 名称
    Typedef 名称不能用作标识符在同一范围。

例如,从结构标记,结构成员,并且,变量名在三个不同命名空间,在此示例中名为的 student 三个项目不冲突。 每个项目上下文允许 student 每个匹配项的正确解释在程序中。 有关结构的信息, (,请参见 结构声明。)

struct student {
   char student[20];
   int class;
   int id;
   } student;

当 student 在 struct 关键字之后时出现,编译器将其识别为结构标记。 当 student 在成员选择运算符后面 (– AMP_GT.),该名称引用结构成员。 在其他上下文中, student 引用结构变量。 但是,重载,因为它遮盖含义,标记命名空间不建议使用。

请参见

概念

程序结构