宣布后
enum color {red, blue, green};
之间有什么区别
color a=blue;
和
enum color a=blue;
答案 0 :(得分:9)
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 };
答案 1 :(得分:5)
假设没有其他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
几乎意味着同样的事情。
答案 2 :(得分:2)
在C语言(而不是C ++)中,要创建名称color
,您必须使用typedef enum scolor {red, blue, green} color;
键入enum colour a = blue;
或使用问题包含的定义 - 否则,编译器不会知道color
是什么。
在C ++中,任何struct X
,class Y
或enum Z
都会自动将X
设为struct X
,将Y
设为class Y
}和Z
为enum Z
- 因此减少了对typedef struct X X;
等的需求(尽管这仍然有效,因为C ++整体上与C向后兼容)。
这两种形式在C ++中同样有效。这是你喜欢的风格问题。