我是C的新手,我发现枚举非常好。我的程序获取一个字符串,并使用枚举来处理案例,然后(有时)我需要发回一个与枚举表中的一个匹配的字符串。有没有办法用枚举或我应该使用查找表? Something like this
typedef enum {
string1,
string2,
string3,
string4,
BADKEY
} strings;
function(string1); //will send the integer,
//but would love to be able to send the string.
function(char *string) {
...
}
答案 0 :(得分:4)
不,没有办法自动获得。您必须实现一种方式,查找表是一种解决方案。
枚举值的名称不是“字符串”,它们只是函数和变量名称之类的符号;它们在代码生成中没有任何作用。一旦代码运行,它就是所有没有名字的机器代码。
答案 1 :(得分:1)
仅供记录,您可以使用预处理器的“stringify”运算符。
#define MAKE_STR(enumMember) #enumMember
这样做是因为它将enumMember替换为“enumMember”,因此您可以像使用字符串一样使用它。
示例:
printf("The value of %s is %d", MAKE_STR(string1), string1);
编辑请注意,尽管stringify所做的只是围绕它用引号传递的内容,所以它字面上将字符串化为#后面写的内容。