首页 > 代码库 > 把枚举转化为相应的字符串
把枚举转化为相应的字符串
把枚举转化为相应的字符串
今天无意间就需要这样的一个功能,从枚举值得到对应的字符串表示,一个容易想到的方法就是再造个字符串数组,和ENUM对应起来,显然这个方法没有可扩展性;第二种方法在stackoverflow上看到的就是巧妙的利用 宏 来生成对应的字符串数组,感觉非常巧妙,易于扩展。下面是这两种方法的代码。
#include<stdio.h> #include<stdlib.h> enum cmd{ CMD_UNSPEC = 0, CMD_ADD, CMD_SUB, CMD_MULTI, CMD_DIV, }; static inline char * cmd_str(enum cmd c){ static const char *strings[] = {"CMD_UNSPEC", "CMD_ADD", "CMD_SUB", "CMD_MULTI", "CMD_DIV", }; return strings[c]; } int main(void){ printf("%s\n", cmd_str(CMD_ADD)); exit(0); }
方法2:
#include<stdio.h> #include<stdlib.h> /*将相应的枚举类型转为字符串(这种方法很重要)*/ #define FOREACH_CMD(CMD) CMD(CMD_UNSPEC) CMD(CMD_ADD) CMD(CMD_SUB) CMD(CMD_MULTI) #define GENERATE_ENUM(ENUM) ENUM, #define GENERATE_STRING(STRING) #STRING, enum CMD_ENUM { FOREACH_CMD(GENERATE_ENUM) }; static const char *CMD_STRING[] = { FOREACH_CMD(GENERATE_STRING) }; int main(void){ printf("%s\n", CMD_STRING[CMD_ADD]); exit(0); }
把枚举转化为相应的字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。