你能从枚举元素的数值中访问实际的标识符吗?

时间:2010-09-29 20:49:00

标签: objective-c c cocoa cocoa-touch

是否有方法返回给定元素数值的标识符字符串?例如,记录UITouch的阶段会返回一个int,但具有实际的字符串值会更容易阅读。

我想我可以编写自己的switch语句来做这件事,但我希望有一个内置的方法。

4 个答案:

答案 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