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
-
공용 구조체 멤버에 적용되는 0개 이상의 필드 특성을 지정합니다. 유효한 필드 특성에는 [first_is], [last_is], [length_is], [max_is], [size_is]이 포함됩니다. 사용 특성 [string], [ignore] 및 [context_handle]; 포인터 특성 [ref], [unique]또는 [ptr]; 그리고 자신이 노조인 멤버의 경우 공용 구조체 특성 [switch_type]입니다. 여러 필드 특성을 쉼표로 구분합니다.
-
union-type-specifier
-
공용 구조체 형식 식별자를 지정합니다. 선택적 스토리지 사양은 형식 지정자보다 우선할 수 있습니다.
-
declarator 및 declarator-list
-
식별자, 포인터 선언자 및 배열 선언자와 같은 표준 C 선언자를 지정합니다. (함수 선언자 및 비트 필드 선언은 원격 프로시저 호출에서 전송되는 공용 구조체에서 허용되지 않습니다. 이러한 선언자는 전송되지 않는 공용 구조체에서 허용됩니다.) 여러 선언자를 쉼표로 구분합니다.
-
function-attribute-list
-
함수에 적용되는 0개 이상의 특성을 지정합니다. 유효한 함수 특성은 [콜백], [로컬]입니다. 포인터 특성 [ref], [unique]또는 [ptr]; 및 사용 특성 [string], [ignore] 및 [context_handle].
-
type-specifier
-
기본 형식, 구조체, 공용 구조체, 열거형 형식 또는 형식 식별자를 지정합니다. 선택적 스토리지 사양은 형식 지정자보다 우선할 수 있습니다.
-
pointer-declarator
-
포인터 선언자를 0개 이상 지정합니다. 포인터 선언자는 C에서 사용되는 포인터 선언자와 동일합니다. * 지정자, 멀리와 같은 한정자 및 한정자 const에서 생성됩니다.
-
function-name
-
원격 프로시저의 이름을 지정합니다.
-
param-attr-list
-
지정된 매개 변수 형식에 적합한 0개 이상의 특성을 지정합니다. 매개 변수 특성은 [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] 특성과 연결된 비범죄자는 공용 구조체와 동일한 논리적 수준에서 정의되어야 합니다.
- union이 매개 변수인 경우 공용 구조체 비범죄자는 다른 매개 변수여야 합니다.
- 공용 구조체가 구조체의 필드인 경우, 비범죄자는 동일한 구조체의 다른 필드여야 합니다.
구조체 또는 함수 매개 변수 목록의 시퀀스는 중요하지 않습니다. 공용 구조체는 앞에 오거나 비난자를 따를 수 있습니다.
[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;