首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取有关枚举类型的信息

获取有关枚举类型的信息
EN

Stack Overflow用户
提问于 2012-08-16 18:00:58
回答 2查看 199关注 0票数 3

我有两种枚举类型:

代码语言:javascript
运行
复制
typedef enum {a=0, a1=3, a2=5} NX;
typedef enum {c=-1, c1=4, c2=7} NY;

我想写一个表达式,给定枚举类型/实例的名称,将返回它的第一个元素的值。一种可能的解决方案是始终添加固定名称的元素,如

代码语言:javascript
运行
复制
typedef enum {a=0, first=a, a1, a2, last=a2}

但是,也许有一种更优雅的方式。

有没有办法在运行时获取枚举中的元素数量?

EN

回答 2

Stack Overflow用户

发布于 2012-08-16 18:04:12

不,sizeof()不适用于枚举。不可能在运行时获取元素的数量。

有一种流行的方法可以检查枚举的最后一个元素值,以确定给定枚举中的元素数量,即:

代码语言:javascript
运行
复制
enum Type {A = 0, B, C, LAST};
printf("'Type' enum has %d number of elements", LAST);
票数 0
EN

Stack Overflow用户

发布于 2012-08-16 18:06:57

如果枚举中的数字是连续的(在您的前两个示例中是连续的),您总是可以使用

代码语言:javascript
运行
复制
typedef enum {first = -18, b, c, d, last } BlahBlah;
(...)
int nptElements = last - first + 1;

来获取元素的数量。当然,这需要了解第一个也是最后一个…

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

https://stackoverflow.com/questions/11984822

复制
相关文章

相似问题

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