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

指定 等位 型別識別碼。 選擇性的儲存體規格可以在 type-specifier之前。

declarator 和 declarator-list

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

function-attribute-list

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

type-specifier

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

pointer-declarator

指定零個或多個指標宣告子。 指標宣告子與 C 中使用的指標宣告子相同;它是從 * 指示項、 遠方修飾詞和限定詞 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 基底類型

回檔

const

coNtext_handle

封裝聯集

枚舉

first_is

忽略

last_is

length_is

當地

max_is

非擷取聯集

ptr

ref

size_is

字串

結構

switch_type

union

獨特