[Warning] scoped enums only available with -std=c++11 or -std=gnu++11
时间: 2024-11-12 07:41:12 浏览: 6
scoped-function:ScopedFunction =新功能+范围
警告提到的 "scoped enums" 是从 C++11 版本开始引入的一个特性,它允许你在枚举类型里设置一个范围,这样可以避免值溢出的问题,并提供更好的类型安全性和可读性。在 C++11 及以上标准中,当你使用 `-std=c++11` 或 `-std=gnu++11` 这样的编译选项时,你可以声明和使用 scoped enums。
例如:
```cpp
#include <cstddef>
// 使用 scoped enum
enum class SizeUnit : std::size_t {
Pixel = 0,
Inch = 1,
Centimeter = 2,
};
SizeUnit unit; // 可以自动推导大小,防止意外赋值超出范围
```
在这个例子中,`SizeUnit` 是一个 scoped enum,每个枚举值都是 `std::size_t` 类型的一部分,这样就限制了它的取值范围,并且枚举名称会带上下划线,使其在代码中更易识别。
如果你尝试在 C++98 或更低版本的代码中使用 scoped enums,编译器通常会报错,因为这些旧版本的语言标准并不支持这一特性。
阅读全文