switch_is 特性

[switch_is] 属性指定充当选择联合成员的联合判别符的表达式或标识符。

typedef struct [[ struct-tag ]] 
{
    [ switch_is(limited-expr) [[ , field-attr-list ]] ] union-type-specifier declarator;
    ...
}

[[ [function-attribute-list] ]] type-specifier [[pointer-declarator]] function-name(
    [ switch_is(limited-expr) [[ , param-attr-list ]] ] union-type [[declarator]]
    , ...);

参数

struct-tag

指定结构的可选标记。

limited-expr

指定 MIDL 支持的 C 语言表达式。 几乎所有 C 语言表达式都受支持。 MIDL 编译器支持条件表达式、逻辑表达式、关系表达式和算术表达式。 MIDL 不允许表达式中的函数调用,不允许预先和帖子递增和帖子递减运算符。

field-attr-list

指定应用于联合成员的零个或多个字段属性。 有效字段属性包括 [first_is][last_is][length_is][max_is][size_is];用法属性 [string][ignore][context_handle];指针属性 [ref][unique][ptr];对于自己是联合的成员,联合属性 [switch_type]。 用逗号分隔多个字段属性。

union-type-specifier

指定 联合 类型标识符。 可选的存储规范可以位于 类型说明符之前。

declarator 和 declarator-list

指定标准 C 声明符,例如标识符、指针声明符和数组声明符。 在远程过程调用中传输的联合中不允许 (函数声明器和位字段声明。这些声明符在未传输的联合中允许。) 用逗号分隔多个声明符。

function-attribute-list

指定应用于函数的零个或多个属性。 有效的函数属性为 [callback][local];指针属性 [ref][unique][ptr];和用法属性 [string][ignore][context_handle]

type-specifier

指定 基类型结构联合枚举 类型或类型标识符。 可选的存储规范可以位于 类型说明符之前。

pointer-declarator

指定零个或多个指针声明符。 指针声明符与 C 中使用的指针声明符相同;它由 * 设计器、修饰符(如 far)和限定符 const 构造。

function-name

指定远程过程的名称。

param-attr-list

指定适用于指定参数类型的零个或多个属性。 参数属性可以采用方向属性 [in][out]、字段属性 [first_is][last_is]、[length_is]、[max_is][size_is][switch_type];指针属性 [ref][unique][ptr];和用法属性 [context_handle][string]。 用法属性 [ignore] 不能用作参数属性。 用逗号分隔多个属性。

union-type

标识 联合 类型说明符。

备注

[switch_is] 属性关联的区分项必须在与联合相同的逻辑级别定义:

  • 当联合是参数时,联合区分器必须是另一个参数。
  • 当联合是一个结构的字段时,区分者必须是同一结构的另一个字段。

结构或函数参数列表中的序列并不重要。 工会可以先于或跟随歧视者。

[switch_is] 属性可以显示为字段属性或参数属性。

示例

typedef [switch_type(short)] union _WILLIE_UNION_TYPE 
{ 
    [case(24)] 
        float fMays; 
    [case(25)] 
        double dMcCovey; 
    [default] 
        ; 
} WILLIE_UNION_TYPE; 
 
typedef struct _WINNER_TYPE 
{ 
    [switch_is(sUniformNumber)] WILLIE_UNION_TYPE w; 
    short sUniformNumber; 
} WINNER_TYPE;

另请参阅

MIDL 基类型

回调 (callback)

const

context_handle

封装的联合

枚举

first_is

忽略

last_is

length_is

当地

max_is

非capsulated Unions

ptr

裁判

size_is

字符串

struct

switch_type

union

独特