0

我是 C 新手,我发现枚举非常好。我的程序获取一个字符串,并使用枚举来处理案例,然后(有时)我需要发回一个与枚举表中的字符串匹配的字符串。有没有办法使用枚举或我应该使用查找表?像这样的东西

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) {
...
}
4

2 回答 2

4

不,没有办法自动得到这个。您必须实现一种方法,查找表是一种解决方案。

枚举值的名称不是“字符串”,它们只是函数和变量名称等符号;它们在代码生成中没有任何作用。一旦代码运行,它都是没有名字的机器代码。

于 2013-03-13T10:11:18.727 回答
1

仅作记录,您可以使用预处理器的“stringify”运算符。

#define MAKE_STR(enumMember) #enumMember

它的作用是将 enumMember 替换为“enumMember”,因此您可以像使用字符串一样使用它。

例子:

printf("The value of %s is %d", MAKE_STR(string1), string1);

编辑请注意,尽管 stringify 所做的只是用引号括住它传递的任何内容,因此它实际上会将 # 之后写的任何内容字符串化。

于 2013-03-13T10:41:09.140 回答