1. 程式人生 > >enum與typedef enum的用法

enum與typedef enum的用法

一,兩者的用法

       列舉型別定義用關鍵字enum標識,形式為:
enum 識別符號
{

      列舉資料表

};
列舉資料(列舉常量)是一些特定的識別符號,識別符號代表什麼含義,完全由程式設計師決定。資料列舉的順序規定了列舉資料的序號,從0開始,依次遞增。
enum status
{

     copy,

     delete

};
列舉型別status僅有兩個資料,一個是copy,一個是delete,序號為0、1,代表複製與刪除。
enum status
{

     copy=6,

     delete

};
則copy的序號為6,delete的序號為7。
      enum用來定義一系列巨集定義常量區別用,相當於一系列的#define xx xx,當然它後面的識別符號也可當作一個型別識別符號;typedef  enum則是用來定義一個數據型別,那麼該型別的變數值只能在enum定義的範圍內取。兩者在這點上是沒有差別的。

二,一些說明

     用enum定義的型別,只能在它的值域範圍內取。比如:

#include "stdafx.h"

enum led_type
{
     led_off = 0,
     led_half = 127,
     led_on = 255,
};

void crake(led_type xx)
{
     printf("%d /n",xx);
}
int _tmain()
{
     crake(0);
     crake(22);
     crake(333);

     return 0;
}

編譯時程式都會報錯:error C2664: 'crake' : cannot convert parameter 1 from 'int' to 'led_type'。儘管enum的型別值仍然是整形,但並不意味著它可以接受範圍外的整型數。(關於此問題,在Linux中,由別人驗證是可以編譯通過的。因為兩者的C編譯法則有差別)