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

指定 等位 類型識別碼。 選擇性儲存體規格可以位於 類型規範之前。

宣告子和宣告子清單

指定標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 (函式宣告子和位欄位宣告不允許在遠端程序呼叫中傳輸的等位。這些宣告子允許在未傳輸的等位中。) 以逗號分隔多個宣告子。

function-attribute-list

指定套用至函式的零個或多個屬性。 有效的函式屬性為[callback][local];指標屬性[ref][unique][ptr];和使用屬性[string][ignore][coNtext_handle]。

type-specifier

指定 基底類型結構等位列舉 類型或類型識別碼。 選擇性儲存體規格可以位於 類型規範之前。

pointer-declarator

指定零個或多個指標宣告子。 指標宣告子與 C 中使用的指標宣告子相同;它是由 * 指示項、 方修飾詞和限定詞 常數所建構。

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 基底類型

回檔

常量

coNtext_handle

封裝聯集

枚舉

first_is

忽略

last_is

length_is

當地

max_is

非擷取聯集

Ptr

ref

size_is

string

結構

switch_type

聯盟

獨特