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