在我声明之后
enum color {red, blue, green};
有什么区别吗
color a=blue;
和
enum color a=blue;
enum MyEnumType { ALPHA, BETA, GAMMA };
enum MyEnumType x; /* legal in both C and C++ */
MyEnumType y; // legal only in C++
enum { HOMER, MARGE, BART, LISA, MAGGIE };
假设没有其他color
可用的声明,它们的含义相同。但是,提供 的不同定义是有效的color
,并且enum color
可用于确保使用该类型。
enum color { red, blue, green };
color color(const char *);
enum color a = red;
在第二行,将返回类型指定color
为有效,并引用enum color
. 在第三行,enum
关键字是必需的,因为color
否则将引用在第二行声明的函数。
但出于实际目的,enum color
几乎color
意味着同样的事情。
在 C 语言(与 C++ 相对)中,要创建 name color
,您必须键入typedef enum scolor {red, blue, green} color;
或使用问题包含的定义,使用enum colour a = blue;
- 否则,编译器将不知道是什么color
。
在 C++ 中, any struct X
, class Y
, or enum Z
, 将自动别名X
asstruct X
和Y
asclass Y
和Z
as enum Z
- 从而减少对typedef struct X X;
, 等的需要(尽管这仍然有效,因为 C++ 作为一个整体向后兼容 C)。
这两种形式在 C++ 中同样有效。这是你喜欢的风格问题。