我有 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}
但是,也许有更优雅的方式。
有没有办法在运行时获取枚举中的元素数量?
不,sizeof()
不适用于枚举。在运行时无法获取元素的数量。
有一种流行的方法可以检查枚举的最后一个元素值以确定给定枚举中元素的数量,即:
enum Type {A = 0, B, C, LAST};
printf("'Type' enum has %d number of elements", LAST);
如果枚举中的数字是连续的(在前两个示例中它们是连续的),您始终可以使用
typedef enum {first = -18, b, c, d, last } BlahBlah;
(...)
int nptElements = last - first + 1;
获取元素的数量。当然,这需要了解第一个和最后一个...