Непосредственно невозможно то, что вы хотите, но, вероятно, следующий код может помочь вам как обходной путь
#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