【发布时间】:2010-08-11 06:52:26
【问题描述】:
有没有办法显示枚举值的名称? 说我们有:
enum fuits{
APPLE,
MANGO,
ORANGE,
};
main(){
enum fruits xFruit = MANGO;
...
printf("%s",_PRINT_ENUM_STRING(xFruit));
...
}
使用预处理器
#define _PRINT_ENUM_STRING(x) #x
不起作用,因为我们需要获取变量 'x' 的值,然后将其转换为字符串。 这在 c/C++ 中完全可能吗?
【问题讨论】:
-
这是一个关于 intertubes 的常见问题解答,很可能是一个骗子,尽管我没有检查。回答:不,这是不可能的(如果没有像@Naveen 建议的那样做一些圈套,并冒着失去同步的风险。如果你准备冒这个风险,似乎会有很多人使用这个解决方案。总比没有好,但它是诱人的命运......)。
-
@Eugen Constantin Dinca 这个问题只是 C++,而这里的 OP 似乎想要一个 C 解决方案。
-
@schot 此问题已被 OP 标记为 C++。
-
天啊!感谢cmets,我也认为这也做不到。好吧,只是为了确保 C 每隔一天就让我惊叹不已。我想我会把 shot 标记为最接近的答案。