switch_type - атрибут
Атрибут [switch_type] определяет тип переменной, используемой в качестве дискриминанта объединения. Тип параметра может быть целым числом, символом, логическим типом или типом перечисления.
switch_type(switch-type-specifier)
-
switch-type-specifier
-
Указывает тип int, char, boolean или перечисления либо идентификатор такого типа.
В то время как атрибут [switch_type] определяет тип переменной, атрибут [switch_is] указывает имя параметра, который является дискриминантом объединения. Атрибут [switch_type] применяется к параметрам или членам структур или объединений.
Объединение и его дискриминант должны быть указаны на одном и том же логическом уровне. Если объединение является параметром, дискриминант объединения должен быть другим параметром. Если объединение является полем структуры, дискриминант должен быть другим полем структуры на том же уровне, что и поле объединения.
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;