C-如何获取 enum 里的变量的个数?

C-如何获取 enum 里的变量的个数?

灵芸 发布于 2017-06-18 字数 64 浏览 1492 回复 3

比如:enum a { b = 0, c}
如何得到 a 里面变量的数目?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泛泛之交 2017-11-08 3 楼

的确没有好的方法来计算enum的值,但如果你的enum是这样定义的话

enum a {b=0, C = 6, D = 8, MAX_COUNT};

这种情况下就会出现问题

建议你用 boost::Enum 来解决这个问题,boost::Enum 可以获取Enum的个数 boost 的示例:

#define DEFINE_NEW_ENUM(Type_, Values_)
typedef enum { BOOST_PP_SEQ_ENUM(Values_) } Type_;
size_t count(Type_) { return BOOST_PP_SEQ_SIZE(Values_); }
清晨说ぺ晚安 2017-09-13 2 楼

感觉这个数目是编译器才知道;
猜测俩方法:
可以在最后加个额外的元素,作为数目;
或者,利用宏:enum每元素分行写,然后使用行号那个宏做减法。

清晨说ぺ晚安 2017-08-01 1 楼

按照经验是没法知道,以前写c的人都有这种习惯,把第一个置0,最后一个取一个
有特殊意义的名字,但是不用最后一个作为其中的枚举值,而作为所有有效的枚举个数

如:
enum a { b = 0, C, D, MAX_COUNT}
那么不管维护代码时怎么修改,MAX_COUNT,必须保持不修改而且一直排在最后。

纠正下a里面的东西不叫变量,是类型中的常量而已。