【发布时间】:2015-03-20 00:32:15
【问题描述】:
printf("%i", _Generic(REGISTER_AX, enum SegmentRegister: 0, enum GpRegister: 1, default: 2));
在上面的代码中,想要的结果是1,因为REGISTER_AX是enum GpRegister的成员。
即使编译器很乐意接受enums 作为关联类型,代码也会打印出2,因为枚举值被评估为int。
我的问题是:有没有办法产生所需的结果,通用选择中的表达式是否会与 enum 类型相关联?
【问题讨论】:
-
在 C(标准的任何版本)中,枚举常量的类型为 int。
标签: c generics enums selection c11