2010-10-16 7 views
0

J'utilise VC2008 comme mon complier, et il me est surpris de qu'un ENUM pourrait être utilisé sans défini:Pourquoi un type ENUM pourrait être utilisé sans défini

void func(enum EnumType type) 
{ 

} 
code

ci-dessus pourrait être compilé et exécuté sans un problème, quelqu'un pourrait-il expliquer pourquoi cela fonctionne?

Mise à jour: je pourrais définir un ENUM vide en C++, comme suit:

enum EnumType {}; 

Répondre

2

Ceci est évidemment une extension du langage non standard Visual C++.

Vous ne pouvez pas transférer un enum en C++ standard.

+0

Voulez-vous dire qu'il considère l'expression "enum EnumType type" comme déclaration directe? –

+0

@Dbger: Oui. *** –

+0

Si c'est bien, il semble que MS fasse 2 trucs ici: 1. Vous pouvez renvoyer declare sth quand vous déclarez le paramètre d'une fonction; 2. VC++ considère que la taille de l'énumération doit toujours être de 4 octets, au moins par défaut. –

Questions connexes