关键字枚举在C ++中启动函数定义

时间:2015-01-26 13:51:44

标签: c++ c syntax enums

我知道在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关键字("出于兼容性原因")?

2 个答案:

答案 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。