C语言 enum和typedef enum的区别
在了解enum和typedef enum的區(qū)別之前先應(yīng)該明白typedef的用法和意義。
C語言里typedef的解釋是用來聲明新的類型名來代替已有的類姓名,例如:
typedef int CHANGE;
指定了用CHANGE代表int類型,CHANGE代表int,那么:
int a,b;和CHANGE a,b;是等價的、一樣的。
方便了個人習慣,熟悉的人用CHANGE來定義int。
typedef為C語言的關(guān)鍵字,作用是為一種數(shù)據(jù)類型定義一個新名字。這里的數(shù)據(jù)類型包括內(nèi)部數(shù)據(jù)類型(int,char等)和自定義的數(shù)據(jù)類型(struct等)。
而enum是枚舉類型,有了typedef的理解容易看出,typedef enum定義了枚舉類型,類型變量取值在enum{}范圍內(nèi)取,在使用中二者無差別。
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 typeUIButtonTypeRoundedRect, // rounded rect, flat white button, like in address cardUIButtonTypeDetailDisclosure,UIButtonTypeInfoLight,UIButtonTypeInfoDark,UIButtonTypeContactAdd, } UIButtonType;看上面兩個例子更好理解,下面的是UIButton的API,UIButtonType指定的按鈕的類型,清楚名了,上面的直接調(diào)用enum里的元素就可以了。
區(qū)別
定義類型,例如:typedef long time_t;之后在程序中聲明變量時,time_t a;就相當于long a;再如有typedef enum{yes,no} yes_no;之后yes_no a;相當于enum{yes,no} a;
參考文章1:enum和typedef enum的區(qū)別
參考文章2:C語言編程中的typedef enum
總結(jié)
以上是生活随笔為你收集整理的C语言 enum和typedef enum的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CV报错:CAP_IMAGES: can
- 下一篇: C语言 memset()函数(内存初始化