c - 结构标签、 union 标签和枚举标签是否有单独的命名空间?

标签 c namespaces name-lookup

schot's answer是一个很好的。他声称

  • Tags (names of structures, unions and enumerations).

我认为结构、 union 和枚举的标签具有不同的命名空间,因此这段代码完全没问题:

// In the same scope
struct T {};
union T {};
enum T {};

但从上面的引文推断,似乎所有标签都共享同一个命名空间。答案不够清楚还是我错了?

最佳答案

没有。

所有标签共享同一个命名空间。所以你不能有:

struct T {...};
union T {...};
enum T {...};

C11 draft N1570, 6.2.3 Name spaces of identifiers明确添加脚注。

32) There is only one name space for tags even though three are possible.

关于c - 结构标签、 union 标签和枚举标签是否有单独的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348273/

相关文章:

c# - 缺少 System.ServiceModel

c++ - 在哪里定义了名称查找规则来查找最直接的名称声明?

c - 帮助处理来自 gcc 的错误消息

c - 函数指针不指向任何内容——如何避免这种情况?

java - JNI 中的二维 C 数组

python - 在 Python 中添加到本地命名空间?

C++:使用传入的字符串参数访问类型中的内容

c++ - 最小 GCC C++ 编译器

c++ - 具有不合格名称 : C++0x draft n3290 的名称查找

c++ - 基本类型和用户定义类型的名称查找问题