C ++枚举语法

时间:2013-06-21 19:50:45

标签: c++ enums

宣布后

enum color {red, blue, green};

之间有什么区别
color a=blue;

enum color a=blue;

3 个答案:

答案 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 colorcolor几乎意味着同样的事情。

答案 2 :(得分:2)

在C语言(而不是C ++)中,要创建名称color,您必须使用typedef enum scolor {red, blue, green} color;键入enum colour a = blue;或使用问题包含的定义 - 否则,编译器不会知道color是什么。

在C ++中,任何struct Xclass Yenum Z都会自动将X设为struct X,将Y设为class Y }和Zenum Z - 因此减少了对typedef struct X X;等的需求(尽管这仍然有效,因为C ++整体上与C向后兼容)。

这两种形式在C ++中同样有效。这是你喜欢的风格问题。