我有以下代码:
typedef struct Y {int X;} X;
enum E {X};
这会产生错误:
错误:“X”重新声明为不同类型的符号
据我所知,C 为结构、联合和枚举标签以及它们的成员隐式定义了命名空间。所以,我不确定为什么E::X
会与 typedef 结构标签发生冲突X
?
C 中的名称空间到底是什么?
我有以下代码:
typedef struct Y {int X;} X;
enum E {X};
这会产生错误:
错误:“X”重新声明为不同类型的符号
据我所知,C 为结构、联合和枚举标签以及它们的成员隐式定义了命名空间。所以,我不确定为什么E::X
会与 typedef 结构标签发生冲突X
?
C 中的名称空间到底是什么?