首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >visual studio 2010中的C++强类型枚举

visual studio 2010中的C++强类型枚举
EN

Stack Overflow用户
提问于 2012-10-10 23:42:35
回答 2查看 6.9K关注 0票数 2

当我在VS2010中使用强类型枚举时,例如:

代码语言:javascript
运行
复制
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的代码分析会导致这一点崩溃。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-11 00:05:11

C++11枚举是这样完成的:

代码语言:javascript
运行
复制
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位版本之间差别不大。

票数 3
EN

Stack Overflow用户

发布于 2019-01-08 23:03:17

VS 2010不是一个完整的C++11实现:Support For C++11/14/17 Features (Modern C++)

来自Microsoft VS2010文档:C++ Enumeration Declarations

枚举的定义:

代码语言:javascript
运行
复制
enum [tag] [: type] {enum-list} [declarator];

类型是标识符的底层类型。这可以是任何标量类型,例如int、short或long的有符号或无符号版本。也允许使用bool或char。

它没有提到任何关于long long的内容(可能文档没有更新)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12823282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档