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;

参考文章1:enum和typedef enum的区别

参考文章2:C语言编程中的typedef enum

以上是关于C语言 enum和typedef enum的区别的主要内容,如果未能解决你的问题,请参考以下文章

enum sizeof typedef分析

C/c++:语言中关键字typedef(类型重命名)enum(整型常量值集合,代替#define)的使用

C语言中enum的用法

怎么获取C#中enum

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弱枚举类型)