我有两种枚举类型:
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}
但是,也许有一种更优雅的方式。
有没有办法在运行时获取枚举中的元素数量?
发布于 2012-08-16 18:04:12
不,sizeof()
不适用于枚举。不可能在运行时获取元素的数量。
有一种流行的方法可以检查枚举的最后一个元素值,以确定给定枚举中的元素数量,即:
enum Type {A = 0, B, C, LAST};
printf("'Type' enum has %d number of elements", LAST);
发布于 2012-08-16 18:06:57
如果枚举中的数字是连续的(在您的前两个示例中是连续的),您总是可以使用
typedef enum {first = -18, b, c, d, last } BlahBlah;
(...)
int nptElements = last - first + 1;
来获取元素的数量。当然,这需要了解第一个也是最后一个…
https://stackoverflow.com/questions/11984822
复制相似问题