c - 类型定义一个枚举类型作为结构

标签 c struct enums embedded typedef

这里嵌入了c。 我们的一位合作伙伴向我们发送了他们正在使用的库函数的 API 原型(prototype)。有一个像这样的枚举:

typedef enum{
     val1 = 0, 
     val2 = 1, 
    [..]
} status;

然后将枚举类型定义为结构:

typedef struct status status_t;

这个typedef是什么意思? 有实际意义吗? 我必须像常规结构一样处理它吗? 我认为通过这种方法我可以将枚举器转换为结构并且可以访问该结构的成员,但我不确定。 任何提示将不胜感激。 B.R.

在 arm-gcc 上,GNU c99

最佳答案

这是两种不同的类型。

结构名称在它们自己的命名空间中。所以struct statusstatus是不同的。前者是结构的名称,而后者是引用未命名的 enum 的 typedef。

分配给枚举的 typedef 名称与分配给结构的标签名称相同的事实并不意味着就编译器而言它们以任何方式关联。

关于c - 类型定义一个枚举类型作为结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48867044/

相关文章:

找不到指定的路径: CreateDirectoryW

计算无符号整数中的位数

arrays - 在go中创建异构json数组

c - 结构表作为函数参数

c# - 对于结构,我是否必须在 C# 中显式调用构造函数?

ios - 使用反射来减少枚举样板?

c - Linux 设备驱动程序 : Symbol "memcpy" not found

c 前向声明(像 c++ 一样尝试但不起作用)

swift - Swift 类中的枚举

c# - 枚举数组的 "general"类型是什么?