4

在我声明之后

enum color {red, blue, green};

有什么区别吗

color a=blue;

enum color a=blue;
4

3 回答 3

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 };
于 2013-06-21T19:53:49.503 回答
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意味着同样的事情。

于 2013-06-21T19:58:44.240 回答
2

在 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, 将自动别名Xasstruct XYasclass YZas enum Z- 从而减少对typedef struct X X;, 等的需要(尽管这仍然有效,因为 C++ 作为一个整体向后兼容 C)。

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

于 2013-06-21T19:57:29.423 回答