怎么获取enum的变量名称

假设一个枚举类型

typedef enum NUMBERLIST

{
int ZERO = 0;

int ONE = 1;

int TWO = 2;

}NUMBER;

NUMBER num;

现在我要如何用简单的方法根据num的值获得“ZERO”,“ONE”之类的字符串变量?用switch或者if不可行,实际的变量数非常多
忘记说了,是用C的方法实现,编译器是gcc,楼下那些C#或者C++的方法没法用

将枚举的值转换为对应的名字
inthashCode = Color.Red.GetHashCode(); stringenumParseStr = Enum.Parse(typeof(Color), hashCode.ToString()).ToString();Enum.Parse()得到的值是object类型的,我们要转换的是值,得到的是名字,因此ToString()得到名字。

将枚举的名字转换为对应的值
stringstr = Color.Red.ToString(); intenumParseInt = Convert.ToInt32(Enum.Parse(typeof(Color), str));这里要转换的是名字,得到的是值,因此用Convert.ToInt32()得到该值。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-15
c语言里的枚举实际上是结构体,枚举项是变量名,没法直接获得的……你可以再自己定义一个字符串数组:
char numberString[30][MAX_LENGTH]={"ZERO","ONE","TWO"}
在需要用到原来枚举的地方这样调用
numberString[num.ZERO]追问

如果没办法那就算了,有8000多个枚举项,有用的也有好几百,这样会累死。。。谢谢

追答

或者你可以借助其他语言编程,根据原来的枚举,生成字符串数组,把原来枚举的代码复制到一个txt文件里,一行一行读取,分析,生成对应的数组。

本回答被提问者采纳
第2个回答  2012-11-28
tostring方法。
----------------
回答你的补充提问:
我觉得那样为什么要定义成枚举?定义成数组也许好些吧?或者定义哈希表之类的对应起来,
两者可以互相查。追问

这个是历史原因,改不了。。。请问就没有用C的方法了么

第3个回答  2012-11-28
可以这样做:
NUMBERLIST s = (NUMBERLIST)Enum.Parse(typeof(NUMBERLIST), 1);

如何打印出枚举变量的名称
:enum设计出来是为了编写代码方便而使用的,底层并不保存枚举量名称,如果你真需要打印出enum的变量名称出来,可以使用下面的方式: typedef enum { A = 0, B, C }ENUM_SAM_T; char* p[3]={"A","B","C"}; 然后可以在程序中做如下打印枚举量E的值 ...

c的printf怎么输出枚举类型变量
}ENUM_SAM_T;char* p[3]={"A","B","C"};然后可以在程序中做如下打印枚举量E的值:ENUM_SAM_T E = A;printf("%s",p[E]);

欧姆龙systemstudio程序里如何枚举变量读取
1、首先打开需要读取枚举变量的程序代码。2、其次找到包含枚举变量的程序行或程序块,确定该枚举变量的名称、数据类型和存储位置。3、然后创建一个程序段或函数,编写读取该变量的代码。4、最后在代码中使用名称来引用该枚举变量,并将其分配给另一个变量即可。

枚举类型变量的定义
2. 第一种方法是先定义枚举类型,然后定义枚举类型变量。例如:enum 标识符 {枚举数据表};enum 标识符 变量表;3. 第二种方法是在定义枚举类型的同时定义枚举类型变量。例如:enum 标识符 {枚举芦备数据表} 变量表;4. 第三种方法是直接定义枚举类型变量。例如:enum(枚举数据表)变量表;5. 例如,...

枚举类型变量的定义
(1)先定义枚举类型,再定义枚举类型变量:enum标识符{枚举数据表);enum标识符 变量表;(2)在定义枚举类型的同时定义枚举类型变量:enum标识符{枚举数据表) 变量表;(3)直接定义枚举类型变量:enum(枚举数据表)变量表;例如,对枚举类型enum color,定义枚举变量c1、c2:enum color{red,yellow,blue,...

C语言 enum(枚举)
枚举的定义语法如下:enum 枚举名 {枚举元素1, 枚举元素2, ...};例如,一周有7天,使用枚举可以简化为:而非#define定义:enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN};枚举变量的默认值是0,后续元素值递增。比如季节枚举:可以自定义元素值:enum season {spring, summer=3, autumn...

CAPL内置的数据类型--枚举(Enumeration)
使用name方法可获取枚举类型的值标识符,若无可用标识符,则该值将转换为字符串。可通过containsValue方法检查枚举类型是否包含特定值。DBC数据库中的值表会自动定义为枚举类型,类型名称与值表名称一致,元素来自同一值表。系统变量的值表也会定义枚举类型,类型前缀为VtSv_,由命名空间、系统变量名称组成...

ENUM定义和说明
枚举类型的一般形式是:enum 枚举名{ 枚举值表 };在枚举值表中,需要列出所有可用值,这些值被称为枚举元素。例如,为了定义一周的七天,可以使用如下枚举:enum weekday{ sun,mon,tue,wed,thu,fri,sat }枚举变量的说明方法与结构或联合相似,可以分为三种:1. **先定义后说明**:先定义枚举类型...

java中枚举类型enum用法及其背后原理
lang.Enum的类。通过JDK自带工具javap反编译生成的.class文件,可以发现:枚举类自动继承java.lang.Enum,成员变量转化为private static final的枚举实例,且自动添加了private构造函数。这些特性由编译器在编译阶段实现,使用特定的Java反编译工具,如JD GUI、luyten等,也能获取相似信息。

c语言enum用法
具体如下:在定义enum的同时,声明变量:enumMonth{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec}a,b;这样就声明了两个枚举类型a和b定义完enum之后再声明变量:enumMonth{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};定义匿名的枚举变量enum{Jan=1,Feb...

相似回答