关键字枚举在 C++ 中启动函数定义
Keyword enum starting a function definition in C++
我知道在 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
的事实。
相关文章:
- 使用 std::string () const 函数启动线程或未来
- C++关于指针和使用函数将它们启动到堆的行为究竟是什么?
- 启动类函数作为失去引用的线程
- 如何启动地图的复制构造函数?
- 在没有复制构造函数的对象的成员函数中启动 std::thread
- 稍后在构造函数中重新启动异常指令删除此指令
- 使用 std::thread & std::bind 在成员函数中启动线程
- SetTimer (带有回调函数)是否通过启动新线程来工作?
- std::thread从函数启动,无需等待线程完成
- 什么是递归启动函数
- 在单独的线程中使用参数启动成员函数
- 无法异步启动带有对象参数的函数
- c++ 在派生函数中启动 OMP 线程
- 如何在类构造函数内部对同一类的成员函数启动pthread
- 使用 tcp 命令在 c++ 应用程序中启动函数
- 关键字枚举在 C++ 中启动函数定义
- MS Visual C++通过单击按钮启动函数而不阻塞对话框
- .lib中的Main函数作为启动函数
- 如何在C++中的特定时间启动函数
- 每当启动函数 game() 时,get(c) 第一次在循环中不起作用(在第 90 行中)。