CC实战027遍历enum枚举类型
什么是枚举
枚举是C语言中的一种基本数据类型,它可以用来声明一组常数(静态常量)。当一个变量有几个固定的可取值时就可以将其定义为枚举类型。枚举可以将变量值直接列出,使用时变量值只限于列举出的值范围内。很简单的例子就是日历中每周都有固定的7天,那么我们在定义星期的时候就可以用枚举。
枚举定义
枚举通过关键词enum来定义枚举类型,在枚举中声明该枚举类型的变量并使用该变量存储枚举元素的数值。基础类型表示该枚举中定义的所有枚举数值,枚举可以声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 等基础类型,如果没有声明基础类型则默认为int类型。枚举成员是该枚举类型的常量,所以枚举成员不能具有相同的变量名。如果枚举成员没有赋值则默认第一个枚举成员值为0,往后的枚举成员值会依次顺序加1。
枚举定义系统信息
在获取华中数控设备的系统信息时发现该API函数可以获取到的系统信息相当的多,系统通过定义枚举来区分这些数据。我们要获取这些数据的时候就需要通过指定对应的枚举值来获取对应的信息。为了可以一次性获取系统信息我们需要遍历所有的枚举值,枚举类型的每个元素都是整数,而C++没有提供枚举类型的迭代器也不能在操作后直接赋新值给原对象(枚举没有操作符++),所以没法像数组那样直接遍历。
遍历枚举
那么我们要怎么才能实现枚举的遍历呢?这里我们需要用到强制类型转换,这样遍历在结束后就可以获取到下一个枚举成员了。遍历范围可以通过定义枚举成员变量来限制,这里最后一个枚举成员为HNC_SYS_TOTAL。这里主要是获取的值类型不同SDK提供了不同的API接口,下面将部分判断省略了:
总结
枚举 类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举成员的集合。枚举类型的作用域一般是整个文件或者类内,当在整个文件夹时所有枚举成员不能有相同的,当在类内时不同类的枚举成员可以有相同的。 以上内容是小编给大家分享的【C/C++实战027:遍历enum枚举类型】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
为了方便学习,下面附上本文用到的源码://enum语法结构 访问修辞符 enum 枚举名:基础类型 { 枚举成员, MON = 1 , //变量名 = 变量值 ... }; ------------------------------------------- enum WeekDay { MON, TUE, WED, THU, FRI, SAT, SUN } -------------------或者-------------------- enum WeekDay { SUN = 7,MON = 1, TUE, WED, THU, FRI, SAT } ---------------------------------------------- enum HncSystem { HNC_SYS_CHAN_NUM = 0, /*!< 获取系统通道数 {Get(Bit32)} */ HNC_SYS_PLC_ONLINE, /*!< PLC在线调试 {Get(Bit8[48]) Set(Bit8[48])} */ HNC_SYS_TOTAL }; enum HncSystem s; Bit32 ret,ret1; Bit32 intValue; Bit8 strValue[48]; for (s = HNC_SYS_CHAN_NUM; s <= HNC_SYS_TOTAL; s = (HncSystem)(s + 1)){ switch (s) { case HNC_SYS_CHAN_NUM: /*!< 获取系统通道数 {Get(Bit32)} */ case HNC_SYS_MOVE_UNIT: /*!< 长度分辨率 {Get(Bit32)} */ case HNC_SYS_TURN_UNIT: /*!< 角度分辨率 {Get(Bit32)} */ ret = handle->HNC_SystemGetValue(s, intValue); break; case HNC_SYS_NCK_VER: /*!< NCK版本 {Get(Bit8[32])} */ case HNC_SYS_DRV_VER: /*!< DRV版本 {Get(Bit8[32])} */ case HNC_SYS_PLC_VER: /*!< PLC版本 {Get(Bit8[32])} */ ret1=handle->HNC_SystemGetValue(s, strValue); break; default: break;
什么牌子路由器好用?抠鼻发怒呲牙现在使用的也是华为的路由器,这个我觉得还是挺稳定的,家里网络的速度可以呲牙发怒抠鼻华为華為AX3Pro首选华硕和网件,小贵,不要说崇洋媚外,这是事实,国产还有很长一段路
你的第一块手表是什么牌子的?1984年,父亲送我了一块瑞士的英纳格。这块表他戴了几年了,买新表的的时候应该接近两百块钱。倘若按照现在的购买力计算,相当于现如今的两万块钱。表是无日历的大三针表,手卷上链,17钻
华为手机目前适合不适合买?适不适合看你自己的预算和需求,而且目前华为在售的那些产品中,有些系列的确不适合买,目前在华为官网上,可以看到有畅享系列,Nova系列,P系列和Mate系列。其中畅享系列属于入门低端
淘宝店运行两个多月了,三五天来一单,车也开了,请教各位前辈,如何做好店铺运营?看了评论,觉得大多数都是没有讲到点上。毋庸置疑,淘宝的流量和成交是非常大的。但是,竞争也是非常激烈的,不对,应该是惨烈。既然是惨烈了,那么老讲运营技能是没用的。只要是开过淘宝店的,
网络诈骗,为什么叫电信诈骗?电信指的是利用电子技术在不同的地点之间传递信息,表示不同种类的远距离通讯方式,所以不只是电话或者客户端还包括网络和短信等方式。电信诈骗指的是骗子通过编造虚假信息设置骗局对受害人实施
怎么制作购物网站?建议你找个正规的软件公司,综合考量下,预算够的话给你推荐万米商云,我们公司之前在那做社区团购的。从头开始建购物网站,目前一般有2种网站建设的模式,传统的定制和自助建站。一传统网站建
你身边的老外眼里的中国是什么样的?有哪些不可思议的变化?要么是一脸懵逼,要么是赖着不想走。我身边的老外朋友,来到中国之后,基本上就分这两款。而俄罗斯性感大妞尤小娜是这款刚来中国的时候一脸懵逼,现在赖着不想走。尤小娜原来的中文名字叫尤娜,
微信可以定位是怎么做到的?应邀回答本行业问题。微信本身是不能定位的,他只是读取了手机提供的位置信息。微信可以定位,是因为用户给予了微信这款APP获取定位的权限。我们可以在应用管理中看到微信获得的权限,其中就
好好谈谈立讯精密实话说,今年立讯的增速确实是放缓了,一个客观原因是今年确实遇到了很多不利因素,人工费用上涨,原材料涨价,缺芯片等等。特别是立讯去年做了两个比较大的收购,要知道,在扩张阶段,如果顺的
马克思自然三大定律马克思人是所有社会关系的总和。互联网普及,人进入互联世界,自然包括社会生产关系!马克思第一自然定律生产力决定生产关系现在生产力互联网技术自然产生的生产关系人民的智能手机是覆盖全球的
工信部我国的IPv6网络高速公路已经全面建成IT之家10月19日消息,据证券时报报道,工业和信息化部新闻发言人信息通信管理局局长赵志国在介绍2021年前三季度工业和信息化发展情况时表示,工信部组织开展IPv6网络就绪IPv6