我知道在C和C ++中,您可以使用enum
关键字枚举命名常量:
enum { RED, GREEN, BLUE };
如果您没有为名称分配常量,编译器会逐步执行此操作,从每个新枚举的0
开始。
现在让我们看看差异:
enum COLOR { RED, GREEN, BLUE };
在C中,COLOR是一个所谓的"标签"。它不能直接用于变量或返回类型声明。相反,您必须先使用enum
关键字(或首先为其设置typedef
):
enum COLOR someCFunction();
在C ++中,枚举名称是正确的类型名称,因此enum
不是必需的。
但是你可以包括它,它似乎在句法上是正确和无害的:
enum COLOR someCppFunction();
我应该在C ++代码中的枚举名之前保留enum
关键字("出于兼容性原因")?
答案 0 :(得分:3)
有什么好处?只有在不同项目中使用C和C ++编译器编译源代码时,才能获得ebenefits。既然你也可以在C中使用typedef
,那么无论如何这仍然不是一个很大的好处,而且这种方式更简洁。
另一方面,如果你使用枚举,你必须记住你一直这样做,否则你将有两个版本,这可能会导致混淆和(在最坏的情况下)意想不到的副作用,特别是在共享代码时多个开发人员。
答案 1 :(得分:1)
因为您可以在c
中执行此操作typedef enum Color Color;
enum Color {Red, Green, Blue, White, Black};
然后将enum
的{{1}}声明为
Color
然后,语言不是更改语法的正确标准,如果它在那里可能有意让读者意识到这些变量是Color color;
s。