如何在C中将字符串转换为枚举值

-1 c c-preprocessor

我有一个文件有一些定义,如:

TRACE( tra_1, "AA")
TRACE( tra_1, "BB")
TRACE( tra_1, "CC")
TRACE( tra_1, "DD")
TRACE( tra_1, "EE")
..
Run Code Online (Sandbox Code Playgroud)

等等.其中AA,BB,CC,DD和EE是字符串.

我想从文件中获取这些TRACE定义并将它们转换为枚举.预处理器的输出应如下所示:

typedef enum{
AA,
BB,
CC,
DD,
EE
} TRACE;
Run Code Online (Sandbox Code Playgroud)

ur.*_*ur. 5

也许你可以反过来说:有枚举并从中制作字符串吗?

 #define ENUM2STR( _e ) #_e
 TRACE( tra_1, ENUM2STR(AA) )
 ...
Run Code Online (Sandbox Code Playgroud)