Comment cast / affectez une valeur d'énumération à l'autre enum

J'ai 2 enums en 2 modules différents qui ont exactement la même valeur définie. Comment puis-je jeter un à l'autre?

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;

Une telle cession entraîne un avertissement: type énuméré mélangé avec un autre type
Puis-je éviter les cas de commutateur par typecasting, comme, disons,

b = (int)a;

ou

b = (EnumB)a;
  • Avez-vous essayé de tout cela?
  • Si les deux ont exactement la même valeur définie, pourquoi avez-vous avez tous les deux définis à tous? Il suffit de définir l'un et l'utiliser dans les deux modules. De toute façon, en jetant un enum pour un autre n'est pas toujours une bonne idée. Il devrait fonctionner, cependant.
  • Le compilateur ou de l'outil (avec quelles options) provoque l'avertissement? Il n'y a pas requis par la norme (et gcc -std=c99 -pedantc -Wall -Wextra n'émet pas un).
  • Je n'ai pas essayé non plus. J'utilise gmake
InformationsquelleAutor Aadishri | 2015-02-06