Unioni incapsulate

Un'unione contenuta con la sua discriminante in una struttura all'interno è un'unione incapsulata. L'unione incapsulata è indicata dalla presenza della parola chiave switch . Questo tipo di unione è così denominato perché il compilatore MIDL incapsula automaticamente l'unione e la relativa discriminante in una struttura per la trasmissione durante una chiamata di procedura remota.

Se il tag di unione manca (U1_TYPE nell'esempio precedente), il compilatore genererà la struttura con il campo unione denominato tagged_union.

La forma delle unioni deve essere la stessa tra le piattaforme per garantire l'interconnessione.

Per una descrizione della forma di un'unione incapsulata, vedere unione.

Esempio

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;

Per informazioni correlate, vedere Tipi di base MIDL, char, [context_handle], enumerazione, [first_is], [handle], [ignore], [ignore], [last_is], [length_is], [max_is], [ ms_union], Unioni non incapsulate, [ptr], [ref], [size_is], [string],struct, switch, [switch_is], [switch_type], [transmit_as], unione e [univoco]