2017-10-14 82 views
1

我想用typedef和enum。我有兩條線,下面兩條線是否有區別?typedef和enum有什麼區別

typedef enum {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE 

enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} 

回答

2
  • 第一行定義了一個沒有標籤的enum,並給它一個名字STYPE
  • 第二行定義了一個名爲enum稱爲STYPE

不同的是,第一enum不有一個枚舉標籤,而第二個呢。換句話說,下面兩線將編譯enum STYPE

STYPE s1; 
enum STYPE s2; 

而只有第一線將編譯爲typedef enum ... STYPE

注:使用typedef不是在C++中常見的,因爲enum自動定義類型名稱。該結構在C中更常見,其中enum而不是typedef必須僅用作標籤,即與enum關鍵字一起使用。最後,該構建體也用於C:

typedef enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE; 

它定義了一個標記enum,並且限定類型名稱爲它。這個聲明在C++中也是允許的,但它與你的第二個聲明沒有區別。