这是在 C 中将 typedef 枚举初始化为字符串的简单方法吗?例如,我想将以下 typedef 枚举初始化为其对应的字符串:
typedef enum
{
ADD,
PLUS, MINUS, MUL, DIV, MOD,
AND, OR, NOT,
BROKEN_FOO
} foo;
就像如何在 C 中初始化任何字符串 (char* foo = "+"
) 一样,如何将 foo 的每个成员初始化为其对应的字符串? 例如MINUS = "-"等。我知道每个成员都表示为一个 int,但我不确定如何处理这个问题,因为每个成员都表示为一个 int。
最佳答案
枚举表示为整数值,因此您不能分配 char*
类型的值。
但是,您可以维护与枚举值相对应的单独字符串数组:
typedef enum
{
ADD = 0,
PLUS = 1, MINUS = 2, MUL = 3, DIV = 4, MOD = 5,
AND = 6, OR = 7, NOT = 8,
BROKEN_FOO = 9
} foo;
const char* fooStrings[] = {
"+","+","-","*","/","%","&","|","^",NULL
};
int main() {
printf("OR (%d): %s\n", OR, fooStrings[OR]);
}
关于c - 将 typedef 枚举初始化为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51013913/