当我在VS2010中使用强类型枚举时,例如:
enum eTest : long long
{
_test1 = 0x0000000000000001,
_test2 = 0x0000000000000002,
};我得到这样的警告:
http://msdn.microsoft.com/en-us/library/ms173702.aspx
使用了非标准扩展:为枚举“enum”指定基础类型
为什么会这样呢?我以为VS2010支持C++11?另外,在64-32位VS2010编译器之间,基于64位的枚举安全吗?
编辑:
关于我的问题的第二部分:我问的是32和64位,因为当32位作为目标时,对64位枚举中的位标志进行OR运算会导致编译器错误。然而,我发现is的原因是因为启用Microsoft的代码分析会导致这一点崩溃。
发布于 2012-10-11 00:05:11
C++11枚举是这样完成的:
enum class eTest : long long
{
_test1 = 0x0000000000000001,
_test2 = 0x0000000000000002,
};请参阅Strongly Type Enumerations
编辑,我相信VS2010没有支持它的编译器。我认为C++11枚举仅仅是partially supported in the MSVC++ 10 Compiler
至于大小:查看讨论数据类型大小的this page。微软的编译器在32位和64位版本之间差别不大。
发布于 2019-01-08 23:03:17
VS 2010不是一个完整的C++11实现:Support For C++11/14/17 Features (Modern C++)
来自Microsoft VS2010文档:C++ Enumeration Declarations
枚举的定义:
enum [tag] [: type] {enum-list} [declarator];类型是标识符的底层类型。这可以是任何标量类型,例如int、short或long的有符号或无符号版本。也允许使用bool或char。
它没有提到任何关于long long的内容(可能文档没有更新)。
https://stackoverflow.com/questions/12823282
复制相似问题