【发布时间】:2021-01-20 08:55:23
【问题描述】:
我对@987654324@ 中的非范围枚举行为有疑问。我已经阅读了有关堆栈溢出和其他页面的多个问题和文章。
我使用C++0x 标准并在GCC 4.6.4 上运行
我可以用大小定义非范围枚举(如 int)。参考godbolt
#include<iostream>
enum Enum: int;
enum Enum: int
{
first,
second,
third
};
int main()
{
int numbers = first;
switch (numbers)
{
case first: break;
case second: break;
default: break;
}
return 0;
}
指定枚举的大小不是C++11 特征吗?
我在StackOverflow 上找到了一个答案,声称如果我们在定义之前声明它们,我们可以定义具有大小的范围枚举。该答案提供了Wiki 链接。但是C++11 的wiki 链接已更新,C++03 的引用已被删除。
那么我们可以在C++03 中定义enum 的大小吗?代码(粘贴在上面)是有效的C++03 代码吗?如果我们可以定义,那么它会影响enum 的底层类型吗?
【问题讨论】:
-
如果您使用 C++0x,您将启用 GCC 能够实现的任何 C++11 功能。这就是 C++0x 的目的(当时仍然认为 C++11 将在 2010 年之前完成)。
-
C++11 本来应该比 11 早一点,这就是为什么编译器选项在最终确定之前被称为
C++0x -
感谢 cmets。现在很清楚
C++0x是基于C++的草稿版本。C++11委员会将其定为标准。