首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WindRiver Workbench 3.3中带有数据类型的Enum

WindRiver Workbench 3.3中带有数据类型的Enum
EN

Stack Overflow用户
提问于 2016-10-12 19:03:11
回答 1查看 351关注 0票数 1

在Visual 2010中,我能够使用数据类型构建枚举。

代码语言:javascript
复制
enum FRUIT_E : UINT16
{
    APPLE = 0,
    LEMON = 1,
    GRAPE = 2,
};

然而,当我试图在Workbench中编译时,我得到了以下错误:

*错误:使用枚举'FRUIT_E‘而不事先声明

我确实需要在字段被压缩时指定enum的数据类型。有任何方法可以显式指定枚举的类型吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-16 02:03:26

对你问题的简短回答是否定的。

为枚举定义基类型的能力是直到C++11 (http://en.cppreference.com/w/cpp/language/enum)才添加的一种语言特性。不幸的是,WindRiver一直缓慢地支持符合现代C++标准(C++ 11 in vxworks)的编译器。在g++ for VxWorks 7.0+ (https://stackoverflow.com/a/36311473)的商业版本中提到了对7.0+的支持。但是,您的WorkBench版本(<4.0)意味着这对您没有帮助。

在你的情况下,我可以拼凑出一个解决办法,比如:

代码语言:javascript
复制
namespace FRUIT_E
{
    static const UINT16 APPLE = 0;
    static const UINT16 LEMON = 1;
    static const UINT16 GRAPE = 2;
}

typedef FRUIT_T UINT16;

...

FRUIT_T fruit = FRUIT_E::APPLE;

但是,这不能提供类型安全,因为FRUIT_T只是UINT16的别名。所以,这是远远不理想的。我在你的问题上加了标签。也许有更好的工作环境,更接近地模仿所期望的行为。但是,增加一个新的语言特性似乎表明现有的方法是不够的。

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

https://stackoverflow.com/questions/40006435

复制
相关文章

相似问题

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