我有2种枚举类型:
typedef enum {a=0, a1=3, a2=5} NX;
typedef enum {c=-1, c1=4, c2=7} NY;
我想编写一个表达式,给定枚举类型/实例的名称会返回第一个元素的值。一种可能的解决方案是始终添加固定名称元素,如
typedef enum {a=0, first=a, a1, a2, last=a2}
但是,也许有更优雅的方式。
有没有办法在运行时获取枚举中的元素数量?
答案 0 :(得分:0)
不,sizeof()
不适用于枚举。在运行时不可能获得元素数量
有一种流行的方法可以检查枚举的最后一个元素值,以确定给定枚举中的元素数量,即:
enum Type {A = 0, B, C, LAST};
printf("'Type' enum has %d number of elements", LAST);
答案 1 :(得分:0)
如果枚举中的数字是连续的(并且在你的前两个例子中),你可以随时使用
typedef enum {first = -18, b, c, d, last } BlahBlah;
(...)
int nptElements = last - first + 1;
获取元素数量。当然,这需要了解第一个和最后一个......