switch_type-Attribut
Das [switch_type]- Attribut identifiziert den Typ der Variablen, die als Union-Diskriminant verwendet wird. Der Switchtyp kann eine ganze Zahl, ein Zeichen, ein boolescher Typ oder ein Enumerationstyp sein.
switch_type(switch-type-specifier)
-
switch-type-spezifizierer
-
Gibt einen int-, char-, booleschen oder enum-Typ oder einen Bezeichner eines solchen Typs an.
Während das [switch_type]- Attribut den Variablentyp identifiziert, gibt das [switch_is] -Attribut den Namen des Parameters an, der die Union-Unterscheidung darstellt. Das [switch_type] -Attribut gilt für Parameter oder Member von Strukturen oder Unions.
Die Union und ihre Diskriminanz müssen auf derselben logischen Ebene angegeben 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 weiteres Feld der Struktur auf derselben Ebene wie das Union-Feld sein.
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;