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

Keyword enum starting a function definition in C++

本文关键字:启动 函数 定义 C++ 枚举 关键字      更新时间:2023-10-16

我知道在 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();

我应该在代码中的枚举名称之前保留enum关键字C++("出于兼容性原因")?

有什么好处?仅当您在不同的项目中使用 C 和 C++ 编译器编译源代码时,才会受益。由于您也可以在 C 中使用 typedef,因此无论如何这仍然不是一个很大的好处,而且这样它更简洁。

另一方面,如果你使用枚举,你必须记住你这样做是一致的,否则你将拥有两个版本,这可能会导致混乱和(在最坏的情况下)意外的副作用,尤其是在与多个开发人员共享代码时。

因为你可以在 c 中做到这一点

typedef enum Color Color;
enum Color {Red, Green, Blue, White, Black};

然后声明enum Color

Color color;

然后,语言不是更改语法的正确标准,如果存在,则可能是故意让读者意识到这些变量enum的事实。