iBu*_*Bug 2 c namespaces name-lookup
肖特的回答很好。他声称
- 标签(结构、联合和枚举的名称)。
我认为结构、联合和枚举的标签具有不同的命名空间,因此这段代码完全没问题:
// In the same scope
struct T {};
union T {};
enum T {};
Run Code Online (Sandbox Code Playgroud)
但是从上面的引文推断,看起来所有标签都共享相同的命名空间。答案是不够清楚还是我错了?
不。
所有标签共享相同的命名空间。因此,您不得拥有:
struct T {...};
union T {...};
enum T {...};
Run Code Online (Sandbox Code Playgroud)
C11 草案 N1570,6.2.3 标识符的命名空间明确添加 s 脚注。
32)标签只有一个命名空间,尽管三个是可能的。