有没有办法从我的枚举对象中选择指定的第一个枚举?
例如:
enum keys_t = {P, Pv, Pr, Pd, U, I, S, proc, R, H, A, sqrt, plus, minus, mult, equal, none, error};
现在我想调用元素编号i。
答案 0 :(得分:2)
如果enum
未明确指定数字,您可以将i
投射到enum keys_t
以获取值:
enum keys_t ithValue = (enum keys_t)i;
但是,一般情况下,当您明确指定值时,不支持获取i
- 值:您需要为此构建一个数组:
enum keys_t {P=2, Pv=3, Pr=5, Pd=7, U=11, I=13, S=17, proc=19, R=23, H=29, A=31, sqrt=37, plus=41, minus=43, mult=47, equal=53, none=0, error=59};
enum keys_t keyT_vals[] = {P, Pv, Pd, U, ...}; // ...and so on
...
enum keys_t ithValue = keyT_vals[i];
如果要获取第i个枚举值的名称,则需要创建一个字符串数组,并将其与枚举分开维护。您可以使用“stringize”宏:
#define STR(x) #x
enum keys_t {P, one, error, ...};
char *keys_t_names[] = {STR(P), STR(one), STR(error), ...};
...
char *ithName = keys_t_names[i];