c - 将 typedef 枚举初始化为字符串

标签 c string enums typedef

这是在 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/

相关文章:

python - 类型化的内存 View 不允许在里面如果

c - 如何在 bash 脚本中运行 C 程序并给它一些已定义常量的值?

java - 如何在 Java 编程中删除文件 (.txt) 中的字符串

python - Python 字符串数组如何工作?

c# - EF 代码生成 : How to get a System enum to work as an EdmEnumType?

c - 从控制台应用程序同步击键读取

python - python中的C双重限制

java - 在Java中将整数数组转换为字符串的最佳方法

java - 为什么 java 方法 Enum.valueof 调用枚举类型构造函数?

mysql - 如何使用 JPA 和 Hibernate 仅更新实体的几个字段?