switch_is-Attribut

Das [switch_is]- Attribut gibt den Ausdruck oder Bezeichner an, der als Union-Diskriminant fungiert, der das Union-Element 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 Operatoren vor und nach dem Inkrement sowie vor und nach dem Dekrement zu.

field-attr-list

Gibt null oder mehr Feldattribute an, die für einen Union-Member gelten. Gültige Feldattribute sind [first_is], [last_is], [length_is], [max_is], [size_is]; die Verwendungsattribute [string], [ignore] und [context_handle]; das Zeiger-Attribut [ref], [eindeutig], oder [ptr]; und für Mitglieder, die selbst Gewerkschaften sind, das Union-Attribut [switch_type]. Trennen Sie mehrere Feldattribute durch Kommas.

union-type-specifier

Gibt den Union-Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.

declarator und declarator-list

Gibt einen Standard-C-Deklarator an, z. B. einen Bezeichner, einen Zeiger-Deklarator und einen Array-Deklarator. (Funktionsdeklaratoren und Bitfelddeklarationen sind in Unions nicht zulässig, die in Remoteprozeduraufrufen übertragen werden. 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 [Callback], [local]; das Zeiger-Attribut [ref], [eindeutig], oder [ptr]; und die Verwendungsattribute [string], [ignore] und [context_handle].

Typspezifizierer

Gibt einen Basistyp, eine Struktur, eine Union, einen Enumerationstyp oder einen Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.

Zeiger-Deklarator

Gibt null oder mehr Zeiger-Deklaratoren an. Ein Zeigerdeklarations-Deklarator ist identisch mit dem Zeigerdeklarations-Deklarator, der in C verwendet wird. es wird aus dem * -Bezeichner, 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 Direktionalattribute [in] und [out], die Feldattribute [first_is], [last_is], [length_is], [max_is], [size_is] und [switch_type]; das Zeiger-Attribut [ref], [eindeutig], oder [ptr]; und die Verwendungsattribute [context_handle] und [Zeichenfolge]. Das Verwendungsattribut [ignore] kann nicht als Parameterattribute verwendet werden. Trennen Sie mehrere Attribute durch Kommas.

union-type

Identifiziert den Union-Typspezifizierer.

Bemerkungen

Das dem [switch_is]- Attribut zugeordnete Diskriminant muss auf derselben logischen Ebene wie die Union definiert werden:

  • Wenn union ein Parameter ist, muss der 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 signifikant. Die Vereinigung kann der Diskriminanz entweder vorangehen oder folgen.

Das Attribut [switch_is] kann als Feldattribute oder als Parameterattribute angezeigt werden.

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

context_handle

Gekapselte Unions

Enum

first_is

Ignorieren

last_is

length_is

lokal

max_is

Nicht gekapselte Unions

Ptr

Ref

size_is

Schnur

Struktur

switch_type

union

Einzigartige