【发布时间】:2013-10-06 17:44:52
【问题描述】:
虽然我有使用 Java 枚举的经验,但 typedef 和 Objective-C / C 风格的枚举对我来说还是陌生的。我似乎无法理解开头声明名称的枚举与未声明名称的枚举之间的区别。例如:
typedef enum Months {JAN, FEB, MAR, APR}
Months;
对比
typedef enum {JAN, FEB, MAR, APR}
Months;
是否有理由选择前者而不是后者?前者通过两次声明“月”似乎是多余的。
这个question 看起来很相似,但最后没有名字所以我不知道它是否回答了同样的问题。
【问题讨论】:
-
一般来说,编译器对任何一个都可以,但根据我的经验,许多库为了清晰起见而使用第一个选项。另外,它是
typedef,而不是typdef -
还应注意,您应该使用 typedef NS_ENUM(type, enumName) 来确保编译时枚举类型安全。
-
我不明白这是怎么复制的。公认的答案表明我们使用前者而不是后者或 @paulrehkugler 建议的宏,但我在问为什么你会使用前者而不是后者,在阅读另一篇文章后我仍然不确定。只是为了历史意义吗?
标签: objective-c c enums