objective-c - 为什么 typedef 与枚举类型一起使用?

标签 objective-c c enums typedef

为什么在下面的代码中需要 typedef?

typedef enum _Coordinate {
    CoordinateX = 0,    ///< X axis
    CoordinateY = 1,    ///< Y axis
    CPCoordinateZ = 2   ///< Z axis
} Coordinate;

为什么不只使用下面的代码并删除 typedef?

enum Coordinate {
    CoordinateX = 0,    ///< X axis
    CoordinateY = 1,    ///< Y axis
    CPCoordinateZ = 2   ///< Z axis
};

最佳答案

如果您没有 typedef 您的枚举,在您的其他代码中您必须将其称为 enum Coordinate 而不仅仅是 Coordinate ,即使您知道 Coordinate 是一个枚举。我猜这只是为了在引用它时消除 enum 关键字的冗余。

为了更清楚地说明,如果您 typedef 它与声明它分开,它会是这样的:

enum _Coordinate {
    CoordinateX = 0,
    CoordinateY = 1,
    CPCoordinateZ = 2
};

// You map the enum type "enum _Coordinate" to a user-defined type "Coordinate"
typedef enum _Coordinate Coordinate;

这也适用于 C 结构和枚举(Obj-C 枚举无论如何只是 C 枚举)。

关于objective-c - 为什么 typedef 与枚举类型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716538/

相关文章:

ios - 为什么重写 UIView.drawRect 会出现 "calling -display has no effect"消息?

谁能告诉我这有什么问题吗?

c - 什么是 Linux 本地定时器中断?

c++ - 输出打印地址而不是 3D 数组指针中的值

带有 XML Bean 的 Java 枚举?

java - 如何将包含结构的嵌套枚举从 Swift 转换为 Java?

c# - Enum.TryParse 和 Enum.IsDefined 为 char 枚举返回 false

iphone - 核心图gridLines无法使虚线正常工作?

objective-c - 控制最佳实践

ios - 从包含对象名称的字符串访问对象的属性