【发布时间】:2009-11-30 17:56:58
【问题描述】:
我对 typedef/enum 有点困惑,直到我意识到我不需要为 emun 命名。与 typedef 一起使用时,这两者之间有什么区别/好处吗?对我来说,第二个似乎更容易理解。
第一个例子:
typedef enum enumMenuItems {
none,
add,
save,
load,
list,
remove
} menuItems;
menuItems optionSelect = none;
第二个例子:
typedef enum {
Earth = 1,
Mars,
Saturn,
Neptune,
Jupiter
} planets;
planets closest = Mars;
.
编辑:
typedef enum enumMenuItems {
none,
add,
save,
load,
list,
remove
} menuItems;
所以上面基本上定义了两种类型,一种是 enum,称为 enumMenuItems,第二种是 enumMenuItems 的 typedef,称为 menuItems。
menuItems optionSelect = save;
enum enumMenuItems optionSelect = save;
上面两个声明本质上是一样的,一个使用typedef,一个使用enum。因此,如果您使用 typedef,您可以不命名枚举,因为可以通过 typedef menuItem 访问该类型。
加里
【问题讨论】:
-
我对你的编辑有点困惑,布局不仅仅是风格/个人喜好的问题吗?
-
当然,只是想更好地区分枚举的声明和使用。 NBD。
-
您编辑的 cmets 似乎基本正确。有一些语义上的小问题,但实际上我认为这并不重要。
-
谢谢卡尔,我明白了,然后继续 :) 用语义上的小问题打我,我当然有兴趣把事情做好。
-
查看我的回答中的常见问题解答链接;它包含所有坚韧不拔的细节。
标签: objective-c