是否有方法返回给定元素数值的标识符字符串?例如,记录UITouch的阶段会返回一个int,但具有实际的字符串值会更容易阅读。
我想我可以编写自己的switch语句来做这件事,但我希望有一个内置的方法。
答案 0 :(得分:6)
没有。但是,如果您正在寻找一种相对简洁的方法来维护自己的解决方案(例如switch语句),您可以调查X-macros(参见例如http://www.drdobbs.com/184401387)。
答案 1 :(得分:1)
直接说你想要的是不可能的,但是下面的代码可能会帮助你解决这个问题
#include <stdio.h>
#define strFromAnything( x ) ( #x )
int main()
{
typedef enum _tagTestEnum {
Test1,
BlaBla,
HaHa
} TestEnum;
char* TestEnumToStr[] = {
strFromAnything(Test1),
strFromAnything(BlaBla),
strFromAnything(HaHa),
};
TestEnum test = BlaBla;
printf("%d: %s", test, TestEnumToStr[test]);
return 0;
}
它将产生输出:
1: BlaBla
答案 2 :(得分:0)
不,不在C
。你必须自己写。
答案 3 :(得分:0)
在C中没有任何内置。在C99中,枚举常量甚至不是enum
类型,而是int
。