attribut enum
L’énumération mot clé identifie un type énuméré.
enum [tag ]
{
identifier [=integer-value ]
[ , ... ]
}
-
étiquette
-
Spécifie une balise facultative pour le type énuméré.
-
identifier
-
Spécifie l’énumération particulière.
-
integer-value
-
Spécifie une valeur entière constante.
les types d’énumération peuvent apparaître en tant que spécificateurs de typedef dans les déclarations typedef, les déclarations générales et les déclarateurs de fonction (en tant que function-return-type ou en tant que spécificateur de type paramètre). Pour connaître le contexte dans lequel les spécificateurs de type apparaissent, consultez Fichier de définition d’interface (IDL).
Dans le mode par défaut du compilateur MIDL, vous pouvez affecter des valeurs entières aux énumérateurs. (Cette fonctionnalité n’est pas disponible lorsque vous compilez avec le commutateur /osf .) Comme pour les énumérateurs en langage C, les noms d’énumérateurs doivent être uniques, mais les valeurs de l’énumérateur ne doivent pas nécessairement l’être.
Lorsque les opérateurs d’assignation ne sont pas fournis, les identificateurs sont mappés à des entiers consécutifs de gauche à droite, en commençant par zéro. Lorsque des opérateurs d’affectation sont fournis, les valeurs affectées commencent à partir de la dernière valeur affectée.
Le nombre maximal d’identificateurs est de 65 535.
Les objets de type enum sont des types int et leur taille dépend du système. Par défaut, les objets de types enum sont traités comme des objets 16 bits de type non signé short lorsqu’ils sont transmis sur un réseau. Les valeurs situées en dehors de la plage 0 à 32 767 provoquent l’exception d’exécution RPC_X_ENUM_VALUE_OUT_OF_RANGE. Pour transmettre des objets en tant qu’entités 32 bits, appliquez l’attribut [v1_enum] à l’énumération typedef.
typedef enum {Monday=2, Tuesday, Wednesday, Thursday, Friday} workdays;
typedef enum {Clemens=21, Palmer=22, Ryan=34} pitchers;