【发布时间】:2015-04-06 15:16:04
【问题描述】:
我在 2 个不同的模块中有 2 个枚举,它们具有完全相同的值集。如何将一个转换为另一个?
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;
这样的赋值会导致警告:枚举类型与另一种类型混合 我可以通过类型转换避免 switch-case,比如说
b = (int)a;
或
b = (EnumB)a;
【问题讨论】:
-
你试过了吗?
-
如果两者都具有完全相同的值集,为什么要同时定义它们?只需定义一个并在两个模块中使用那个。无论如何,将一个枚举转换为另一个枚举并不总是一个好主意。它应该可以工作。
-
哪个编译器/工具(带有哪些选项)会导致警告?标准没有任何要求(
gcc -std=c99 -pedantc -Wall -Wextra不会发出任何要求)。 -
我也没试过。我用 gmake