封装的联合

内部结构中包含其歧视的联合是封装的联合。 封装的联合由 开关 关键字的存在指示。 这种类型的联合之所以命名,是因为 MIDL 编译器在远程过程调用期间自动封装联合及其在结构中用于传输的区分。

如果缺少联合标记(上面的示例中U1_TYPE),编译器将生成包含名为 tagged_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 基类型字符[context_handle]枚举[first_is][句柄][忽略]; int[忽略][last_is][length_is][max_is][ms_union][ptr][ref][size_is][string]结构switch[switch_is][switch_type][transmit_as]union[唯一]