【发布时间】:2018-06-24 20:58:31
【问题描述】:
他们是用 C 语言将 typedef 枚举初始化为字符串的简单方法吗?例如,我想将以下 typedef 枚举初始化为其对应的字符串:
typedef enum
{
ADD,
PLUS, MINUS, MUL, DIV, MOD,
AND, OR, NOT,
BROKEN_FOO
} foo;
就像在 C (char* foo = "+") 中初始化任何字符串一样,我如何将 foo 的每个成员初始化为其对应的字符串? 例如MINUS = "-" 等。我知道每个成员都表示为一个 int,但我不知道该怎么做,因为每个成员都表示为一个 int。
【问题讨论】:
-
"+"是字符串文字,而不是 int。相比之下,'+'是一个 int。 -
您可以使用
typedef enum {ADD='+', PLUS='+', MINUS='-', ...} foo;将常量初始化为整数值(注意单引号。)如果需要字符串,您还可以使用更精细的enum值到字符串的映射:@ 987654327@是一种方式,可以使用foo_string[ADD]获取"+"。诸如 GNU AutoGen 之类的代码生成器可以为您执行此操作,因此您无需担心映射错误。但是,您不能直接将enum值设置为字符串。