C语言 enum和typedef enum的区别
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 enum和typedef enum的区别相关的知识,希望对你有一定的参考价值。
在了解enum和typedef enum的区别之前先应该明白typedef的用法和意义。
C语言里typedef的解释是用来声明新的类型名来代替已有的类姓名,例如:
typedef int CHANGE;
指定了用CHANGE代表int类型,CHANGE代表int,那么:
int a,b;和CHANGE a,b;是等价的、一样的。
方便了个人习惯,熟悉的人用CHANGE来定义int。
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
而enum是枚举类型,有了typedef的理解容易看出,typedef enum定义了枚举类型,类型变量取值在enum范围内取,在使用中二者无差别。
enum AlertTableSections
kUIAction_Simple_Section = 0,
kUIAction_OKCancel_Section,
kUIAction_Custom_Section,
kUIAlert_Simple_Section,
kUIAlert_OKCancel_Section,
kUIAlert_Custom_Section,
;
typedef enum
UIButtonTypeCustom = 0, // no button type
UIButtonTypeRoundedRect, // rounded rect, flat white button, like in address card
UIButtonTypeDetailDisclosure,
UIButtonTypeInfoLight,
UIButtonTypeInfoDark,
UIButtonTypeContactAdd,
UIButtonType;
看上面两个例子更好理解,下面的是UIButton的API,UIButtonType指定的按钮的类型,清楚名了,上面的直接调用enum里的元素就可以了。
区别
定义类型,例如:typedef long time_t;之后在程序中声明变量时,time_t a;就相当于long a;再如有typedef enumyes,no yes_no;之后yes_no a;相当于enumyes,no a;
以上是关于C语言 enum和typedef enum的区别的主要内容,如果未能解决你的问题,请参考以下文章
C/c++:语言中关键字typedef(类型重命名)enum(整型常量值集合,代替#define)的使用
C语言枚举和C++枚举的区别?enum class(C++11强类型枚举(Strongly-typed enums)强枚举 Scoped Enumerations)(C++98弱枚举类型)
C语言枚举和C++枚举的区别?enum class(C++11强类型枚举(Strongly-typed enums)强枚举 Scoped Enumerations)(C++98弱枚举类型)