string 특성
[string] 특성은 1차원 char, wchar_t, 바이트(또는 이와 동등한) 배열 또는 이러한 배열에 대한 포인터를 문자열로 처리해야 했음을 나타냅니다. 문자열은 필드가 모두 바이트 형식인 구문의 배열(또는 배열에 대한 포인터)일 수도 있습니다.
typedef [ string [[ , type-attribute-list ]] ] type-specifier declarator-list;
typedef [ struct | union ]
{
[ string [[ , field-attribute-list ]] ] type-specifier declarator-list;
...
};
[ string [[ , function-attribute-list ]] ] type-specifier ptr-decl function-name(
[[ [ parameter-attribute-list ] ]] type-specifier [[standard-declarator]]
, ...);
[[ [ function-attribute-list ] ]] type-specifier [[ptr-decl]] function-name(
[ string [[ , parameter-attribute-list ]] ] type-specifier [[standard-declarator]]
, ...);
매개 변수
-
type-attribute-list
-
형식에 적용되는 하나 이상의 특성을 지정합니다. 유효한 형식 특성에는 [handle], [switch_type], [transmit_as]이 포함됩니다. 포인터 특성 [ref], [unique] 또는 [ptr]; 및 사용 특성 [context_handle], [문자열] 및 [무시]. 여러 특성을 쉼표로 구분합니다.
-
type-specifier
-
기본 형식, 구조체 형식 또는 형식 식별자를 지정합니다. 선택적 스토리지 사양은 형식 지정자 앞에 설 수 있습니다.
-
표준 선언자
-
식별자, 포인터 선언자 또는 배열 선언자와 같은 표준 C 선언자를 지정합니다. 자세한 내용은 배열 및 Sized-Pointer 특성, 배열, 배열 및 포인터를 참조하세요.
-
declarator-list
-
식별자, 포인터 선언자 및 배열 선언자와 같은 표준 C 선언자를 지정합니다. 자세한 내용은 배열 및 Sized-Pointer 특성, 배열, 배열 및 포인터를 참조하세요. declarator-list는 쉼표로 구분된 하나 이상의 선언자로 구성됩니다. 함수 선언자의 매개 변수 이름 식별자는 선택 사항입니다.
-
field-attribute-list
-
구조체, 공용 구조체 멤버 또는 함수 매개 변수에 적용되는 0개 이상의 필드 특성을 지정합니다. 유효한 두 필드 특성은 [max_is] 과 [size_is]입니다. 사용 특성 [string], [ignore], [context_handle], 포인터 특성 [ref], [unique] 또는 [ptr], 공용 구조체 특성 [switch_type]. 여러 필드 특성을 쉼표로 구분합니다.
-
function-attribute-list
-
함수에 적용되는 0개 이상의 특성을 지정합니다. 유효한 함수 특성은 [콜백], [로컬]입니다. 포인터 특성 [ref], [unique] 또는 [ptr]; 및 사용 특성 [문자열], [무시] 및 [context_handle].
-
ptr-decl
-
[string] 특성이 적용되는 선택적 포인터 선언자를 지정합니다. 포인터 선언자는 C에서 사용되는 포인터 선언자와 동일합니다. * 지정자, 한정자(예: far) 및 한정자 const에서 생성됩니다.
-
function-name
-
원격 프로시저의 이름을 지정합니다.
-
parameter-attribute-list
-
지정된 매개 변수 형식에 적합한 0개 이상의 특성으로 구성됩니다. 매개 변수 특성은 방향 특성 [in] 및 [out]을 사용할 수 있습니다. 필드 특성 [max_is] 및 [size_is]; 포인터 특성 [ref], [unique] 또는 [ptr]; 및 사용 특성 [context_handle] 및 [문자열]. 사용 특성 [ignore] 는 매개 변수 특성으로 사용할 수 없습니다. 여러 특성을 쉼표로 구분합니다.
설명
런타임에 범위가 결정되는 배열과 함께 [string] 특성을 사용하는 경우 다음 예제와 같이 [size_is] 또는 [max_is] 특성도 지정해야 합니다.
/* a string that can hold up to MAX_STRING_LENGTH characters */
typedef [string, max_is(MAX_STRING_LENGTH)] char line[];
[문자열] 특성은 [first_is], [last_is] 및 [length_is]와 같이 전송된 요소의 범위를 지정하는 특성과 함께 사용할 수 없습니다.
다차원 배열에서 사용되는 경우 [string] 특성이 가장 오른쪽 배열에 적용됩니다.
계산된 문자열을 정의하려면 [string] 특성을 사용하지 마세요. 다음과 같은 문자 배열 또는 문자 기반 포인터를 사용합니다.
typedef struct
{
unsigned short size;
unsigned short length;
[size_is(size), length_is(length)] char string[*];
} counted_string;
[string] 특성은 스텁이 언어 제공 메서드를 사용하여 문자열 길이를 결정하도록 지정합니다.
C에서 문자열을 선언할 때 문자열의 끝을 표시하는 추가 문자에 대한 공간을 할당해야 합니다.
예
/* a string type that can hold up to 80 characters */
typedef [string] char line[81];
HRESULT Proc1([in, string] char * pszName);
참고 항목