封装的联合

包含在 结构中的判别函数的联合是封装的联合。 封装的联合由开关关键字 (keyword) 的存在指示。 此类型的联合之所以如此命名,是因为 MIDL 编译器会自动将联合及其判别器封装在结构中,以便在远程过程调用期间进行传输。

如果在上面的示例中缺少联合标记 (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]Nonencapsulated Unions[ptr][ref][size_is][string]structswitch[switch_is][switch_type][transmit_as]union[unique]