我有以下代码:
typedef struct Y {int X;} X;
enum E {X};
产生错误:
error: 'X' redeclared as different kind of symbol
据我所知,C 为结构、 union 和枚举标记及其成员隐式定义了命名空间。所以,我不确定为什么 E::X
会与 typedef 结构标签 X
发生冲突?
C 中的 namespace 到底是什么?
最佳答案
C 没有用于enum
成员的单独命名空间。当您编写 enum {X}
时,会创建一个全局常量 X
(它可能会与其他全局名称冲突,例如 typedef
标签) .
关于c - C 中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545885/