c - C 中的命名空间

标签 c namespaces c99

我有以下代码:

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/

相关文章:

c# - 如何将非命名空间类型导入 IronPython?

c++ - 在头文件中包含 "using namespace"语句是否可以?

c - 在 c99 中使用 clock_gettime 时出现编译错误

c - 提供函数指针时取消引用指向不完整类型的指针

c - 编写一个函数,显示三个不同数字的所有不同组合

visual-studio - 如何在同一个 WCF 服务中命名多个版本化的 ServiceContract?

c - 允许用户编辑已经在 C 语言中打印在屏幕上的文本

c - 如何在c99标准下将x获取到C中的pow y

c - 在 C 中通过 NFS v4 的文件锁租约

Copy-Program 适用于小文件,在较大文件上会出现段错误