Unions encapsulées
Une union qui est contenue avec son discriminant dans une structure à l’intérieur est une union encapsulée. L’union encapsulée est indiquée par la présence du commutateur mot clé. Ce type d’union est ainsi nommé, car le compilateur MIDL encapsule automatiquement l’union et son discriminant dans une structure de transmission pendant un appel de procédure distante.
Si la balise d’union est manquante (U1_TYPE dans l’exemple ci-dessus), le compilateur génère la structure avec le champ d’union nommé tagged_union.
La forme des unions doit être la même entre les plateformes pour garantir l’interconnexion.
Pour obtenir une description de la forme d’une union encapsulée, consultez union.
Exemples
typedef union _S1_TYPE switch (long l1) U1_TYPE
{
case 1024:
float f1;
case 2048:
double d2;
} S1_TYPE;
/* in generated header file */
typedef struct _S1_TYPE
{
long l1;
union
{
float f1;
double d2;
} U1_TYPE;
} S1_TYPE;
Pour plus d’informations, consultez Types de base MIDL, char, [context_handle], enum, [first_is], [handle], [ignore], int, [ignore], [last_is], [length_is], [max_is], [ ms_union], Unions non encapsulées, [ptr], [ref], [size_is], [string], struct, switch, [switch_is], [switch_type], [transmit_as], union et [unique]