Joo*_*ark 6 c enums typedef objective-c
为什么在下面的代码中需要typedef?
typedef enum _Coordinate {
CoordinateX = 0, ///< X axis
CoordinateY = 1, ///< Y axis
CPCoordinateZ = 2 ///< Z axis
} Coordinate;
Run Code Online (Sandbox Code Playgroud)
为什么不只是下面的代码并删除typedef?
enum Coordinate {
CoordinateX = 0, ///< X axis
CoordinateY = 1, ///< Y axis
CPCoordinateZ = 2 ///< Z axis
};
Run Code Online (Sandbox Code Playgroud)
Bol*_*ock 11
如果你没有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;
Run Code Online (Sandbox Code Playgroud)
这也适用于C结构和枚举(无论如何,Obj-C枚举只是C枚举).