Поделиться через


Инкапсулированные союзы

Объединение, содержащееся с его дискриминантом в структуре внутри, является инкапсулированным объединением. Инкапсулированное объединение обозначается наличием ключевое слово переключателя. Этот тип объединения называется так, так как компилятор MIDL автоматически инкапсулирует объединение и его дискриминант в структуре для передачи во время удаленного вызова процедуры.

Если тег union отсутствует (U1_TYPE в приведенном выше примере), компилятор создаст структуру с полем объединения с именем tagged_union.

Форма объединений должна быть одинаковой на разных платформах, чтобы обеспечить взаимосвязь.

Описание формы инкапсулированного объединения см. в разделе Union.

Примеры

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;

Дополнительные сведения см. в разделе Базовые типы MIDL, char, [context_handle], перечисление, [first_is], [handle], [ignore], int, [ignore], [last_is], [length_is], [max_is], [ ms_union], некапсулированные объединения, [ptr], [ref], [size_is], [string], struct, switch, [switch_is], [switch_type], [transmit_as], union, и [unique]