获取枚举类型的信息

时间:2012-08-16 10:00:58

标签: c enums

我有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}

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

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

2 个答案:

答案 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;

获取元素数量。当然,这需要了解第一个和最后一个......