Typedef 列舉

命名列舉有幾種可能性和約定。第一種是在 enum 關鍵字之後使用標記名稱

enum color
{ 
    RED, 
    GREEN, 
    BLUE 
};

然後,必須始終將此列舉與關鍵字標記一起使用,如下所示:

enum color chosenColor = RED;

如果我們在宣告 enum 時直接使用 typedef,我們可以省略標籤名稱,然後使用不帶 enum 關鍵字的型別:

typedef enum 
{ 
    RED, 
    GREEN, 
    BLUE 
} color;

color chosenColor = RED;

但在後一種情況下,我們不能將它用作 enum color,因為我們沒有在定義中使用標記名稱。一個常見的慣例是使用兩者,使得相同的名稱可以使用或不使用 enum 關鍵字。這具有與 C++ 相容的特殊優點

enum color                /* as in the first example */
{ 
    RED, 
    GREEN, 
    BLUE 
};
typedef enum color color; /* also a typedef of same identifier */

color chosenColor  = RED;
enum color defaultColor = BLUE;

功能:

void printColor()
{
    if (chosenColor == RED)
    {
        printf("RED\n");
    }
    else if (chosenColor == GREEN)
    {
        printf("GREEN\n");    
    }
    else if (chosenColor == BLUE)
    {
        printf("BLUE\n");
    }
}

欲瞭解更多關於 typedef 看到的 typedef