Можете ли вы получить доступ к фактическому идентификатору из числового значения элемента enum? - PullRequest
2 голосов
/ 30 сентября 2010

Есть ли способ вернуть строку идентификатора для числового значения данного элемента? Например, запись фазы UITouch возвращает int, но с фактическим значением строки будет легче читать.

Полагаю, я мог бы написать собственное выражение switch для этого, но я надеюсь, что есть встроенные средства.

Ответы [ 4 ]

6 голосов
/ 30 сентября 2010

Нет.Но если вы ищете относительно аккуратный способ поддержки своего собственного решения для этого (например, оператор switch), вы можете исследовать X-макросы (см., Например, http://www.drdobbs.com/184401387).

1 голос
/ 30 сентября 2010

Непосредственно невозможно то, что вы хотите, но, вероятно, следующий код может помочь вам как обходной путь

#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
0 голосов
/ 30 сентября 2010

В Си нет встроенных функций.В C99 константы перечисления не имеют типа enum, а int.

0 голосов
/ 30 сентября 2010

Нет, не в C. Вы должны написать свой собственный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...