封装的联合
包含在 结构中的判别函数的联合是封装的联合。 封装的联合由开关关键字 (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]、 struct、 switch、 [switch_is]、 [switch_type]、 [transmit_as]、 union 和 [unique]