我在2个具有完全相同的值集的模块中有2个枚举。如何将一个 Actor 投给另一个人?
typedef EnumA{
a_dog = 0,
a_cat = 1
} EnumA;
typedef EnumB{
b_dog = 0,
b_cat = 1
} EnumB;
EnumA a = a_dog;
EnumB b;
b = a;
这样的分配会导致警告:枚举类型与另一种类型混合
我可以通过类型转换避免切换情况吗,比如说
b = (int)a;
或者
b = (EnumB)a;
最佳答案
我根据您的问题制作了工作代码。您已经从类型定义中错过了enum
。
typedef enum EnumA
{
a_dog = 0,
a_cat = 1
} EnumA;
typedef enum EnumB
{
b_dog = 0,
b_cat = 1
} EnumB;
int main()
{
EnumA a = a_dog;
EnumB b;
b = (EnumB) a;
printf("%d\n", b);
return 0;
}
代码
b = a
在没有强制转换的情况下也可以正常工作。 b = (int) a;
也可以工作-至少在C11中,因为enum
实际上只是整数。无论如何,恕我直言,做一个明确的类型转换是一个好习惯。