1
我想将字符串转换为枚举数。下面的代码是我想要做的。如何将字符串转换为枚举数?
#define SELECT_DAY(s) s
enum sched {MON, TUE, WED};
int main(void)
{
char *str = "TUE";
printf("%d\n", SELECT_DAY(str));
return 0;
}
正如你所看到的,str有“TUE”字符串的指针。所以,我认为printf函数会打印出数字1.但是,它打印出字符串的地址。
printf("%d\n", TUE);
上面的代码是我的预期。前辈不能处理这个操作吗? 我知道在C#中将字符串转换为枚举的方式是可能的。在C中,有没有办法将一个字符串转换为枚举数?
[C:地图串ENUM]的可能的复制(HTTP: //sketoverflow.com/questions/8642970/c-map-string-to-enum) –
什么是“前任”?顺便说一下,预处理器不会执行这样的转换,因为这不是它的任务,并且处理器(CPU)不会执行这样的转换,因为枚举中使用的符号不会出现在可执行文件中,除非作为调试符号。 – MikeCAT
[在C中使用枚举类型的变量作为字符串的简单方法]可能的重复(http://stackoverflow.com/questions/147267/easy-way-to-use-variables-of-enum-types-as-字符串在-c)的 – MikeCAT