ISO c++ interdit les références à des types "enum"
étant donné le programme:
enum E : int
{
A, B, C
};
g++ -c test.cpp
fonctionne très bien. Cependant, clang++ -c test.cpp
donne les erreurs suivantes:
test.cpp:1:6: error: ISO C++ forbids forward references to 'enum' types
enum E : int
^
test.cpp:1:8: error: expected unqualified-id
enum E : int
^
2 errors generated.
ces messages d'erreur n'ont aucun sens pour moi. Je ne vois aucune référence directe ici.
28
demandé sur
Vladimir Panteleev
2016-08-05 00:29:39
1 réponses
spécifier le type sous-jacent d'un enum est une fonctionnalité de langage C++11. Pour obtenir le code à compiler, vous devez ajouter le commutateur -std=c++11
. Cela fonctionne pour GCC et Clang.
pour les enums en C++03, le type intégral sous-jacent est implémentation-defined, sauf si les valeurs de l'énumérateur ne peuvent pas s'insérer dans un int ou un int non signé. (Cependant, le compilateur de Microsoft a permis de spécifier le type sous-jacent d'un enum comme extension propriétaire depuis VS 2005.)
28
répondu
Vladimir Panteleev
2016-08-18 11:23:48