switch _ is attribute

Der [ Schalter _ ] is-Attribut gibt den Ausdruck oder Bezeichner an, der bzw. der als Union-Diskriminant dient, der den Union-Member auswählt.

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]]
    , ...);

Parameter

struct-tag

Gibt ein optionales Tag für eine -Struktur an.

limited-expr

Gibt einen von MIDL unterstützten C-Sprachausdruck an. Fast alle C-Sprachausdrücke werden unterstützt. Der MIDL-Compiler unterstützt bedingte Ausdrücke, logische Ausdrücke, relationale Ausdrücke und arithmetische Ausdrücke. MIDL lässt keine Funktionsaufrufe in Ausdrücken zu und lässt keine Prä- und Postinkrementoperatoren sowie Prä- und Nachdekrementoperatoren zu.

field-attr-list

Gibt null oder mehr Feldattribute an, die für ein Union-Element gelten. Zu den gültigen Feldattributen zählen zuerst ist , last ist , length ist , max ist , size ist ; die Verwendungsattribute string , ignore und context [ _handle; das ] [ _ ] [ _ ] [ _ ] [ _ ] [ ] [ ] [ _ ] Zeigerattribut [ ref ] , [ unique, ] oder [ ptr; ] [ _ ] und für Member, die selbst Unions sind, wird der Union-Attributschaltertyp verwendet. Trennen Sie mehrere Feldattribute durch Kommas.

union-type-specifier

Gibt den Uniontypbezeichner an. Eine optionale Speicherspezifikation kann dem Typspezifizierer vorangestellt werden.

Deklarator und Deklaratorliste

Gibt einen C-Standarddeklarator an, z. B. einen Bezeichner, einen Zeigerdeklarator und einen Arraydeklarator. (Funktionsdeklaratoren und Bitfelddeklarationen sind in Unions, die in Remoteprozeduraufrufen übertragen werden, nicht zulässig. Diese Deklaratoren sind in Unions zulässig, die nicht übertragen werden.) Trennen Sie mehrere Deklaratoren durch Kommas.

function-attribute-list

Gibt null oder mehr Attribute an, die für die Funktion gelten. Gültige Funktionsattribute sind rückruf , local, das [ ] [ ] Zeigerattribut [ ref, ] [ ] unique oder [ ] [ ptr ] und die Verwendungsattribute [ ] [ _ ] Zeichenfolge , ignorieren und Kontexthand handle .

Typspezifizierer

Gibt einen Basistyp, eine Struktur,eine Union, einen Enum-Typ oder einen Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typspezifizierer vorangestellt werden.

Zeigerdeklarator

Gibt null oder mehr Zeigerdeklaratoren an. Ein Zeigerdeklarator ist mit dem in C verwendeten Zeigerdeklarator identisch. sie wird aus dem * Designator, Modifizierern wie far und dem Qualifizierer const erstellt.

Funktionsname

Gibt den Namen der Remoteprozedur an.

param-attr-list

Gibt null oder mehr Attribute an, die für den angegebenen Parametertyp geeignet sind. Parameterattribute können die direktionalen Attribute [ ] in [ ] [ _ ] [ ] [ _ ] [ _ ] [ _ ] [ _ ] [ ] und aus [ _ ] übernehmen, die Feldattribute sind zuerst , last ist , length ist , max ist , size ist , und [ switch _ type, ] das Zeigerattribut [ ref, ] unique oder [ ptr ] sowie das Kontexthand handle und die Zeichenfolge der Verwendungsattribute. Das ignorierte [ ] Verwendungsattribut kann nicht als Parameterattribut verwendet werden. Trennen Sie mehrere Attribute durch Kommas.

union-type

Identifiziert den Union-Typspezifizierer.

Bemerkungen

Die dem Switch zugeordnete Diskriminanz [ _ muss ] auf der gleichen logischen Ebene wie die Union definiert werden:

  • Wenn die Union ein Parameter ist, muss die Union diskriminant ein anderer Parameter sein.
  • Wenn die Union ein Feld einer -Struktur ist, muss der Diskriminant ein anderes Feld derselben Struktur sein.

Die Sequenz in einer Struktur oder einer Funktionsparameterliste ist nicht von Bedeutung. Die Union kann entweder dem Diskriminanten voran- oder folgen.

Der [ Schalter ist _ ein ] Attribut, das als Feldattribut oder als Parameterattribut angezeigt werden kann.

Beispiele

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;

Weitere Informationen

MIDL-Basistypen

Rückruf

const

Kontexthand _ handle

Gekapselte Unions

Enum

first _ is

Ignorieren

last _ is

length _ ist

lokal

max _ is

Nicht kapselte Unions

Ptr

ref

size _ ist

Schnur

Struktur

_switch-Typ

union

Einzigartige