列表之前和之后的 C 枚举标签 - 类型还是变量名称?

Tob*_*oby 4 c enums

我看到很多场合(谷歌搜索)枚举的声明如下:

enum enum_tag {a = 0, b, c, d} tag_again;

enum enum_tag {a = 0, b, c, d};

或者

enum {a = 0, b, c, d} tag_again;

有时,似乎 enum_tag 是类型,而 tag_again 是变量名,但如果 enum_tag 不存在,则 tag_again 有时似乎被用作其中之一......它是哪一个?

如果我要编码 enum {a = 0, b, c, d} tag_again; tag_again 是枚举类型还是无名枚举类型的变量?

Tob*_*oby 5

继续我的谷歌搜索,MSDN 给了我答案:MSDN C Enum 声明

enum enum_tag {a = 0, b, c, d} tag_again;定义枚举类型 enum_tag 并声明该类型的变量:tag_again。

enum enum_tag {a = 0, b, c, d};定义 enum_tag 的枚举类型

enum {a = 0, b, c, d} tag_again;声明一个无名枚举类型的变量 tag_again (正如我所想的)