string 屬性
[string]屬性工作表示一維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]、 [string]和 [ignore]。 以逗號分隔多個屬性。
-
type-specifier
-
standard-declarator
-
指定標準 C 宣告子,例如識別碼、指標宣告子或陣列宣告子。 如需詳細資訊,請參閱 Array 和 Sized-Pointer Attributes、 arrays.和 Arrays 和 Pointers。
-
declarator-list
-
指定標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 如需詳細資訊,請參閱 Array 和 Sized-Pointer Attributes、 arrays.和 Arrays 和 Pointers。 declarator-list是由一或多個宣告子所組成,並以逗號分隔。 函式宣告子中的參數名稱識別碼是選擇性的。
-
field-attribute-list
-
指定套用至結構、等位成員或函式參數的零個或多個欄位屬性。 兩個有效的欄位屬性為 [max_is] 和 [size_is];使用方式屬性 [string]、 [ignore]、 [coNtext_handle]、指標屬性 [ref]、 [unique]或 [ptr],以及聯集屬性 [switch_type] 。 以逗號分隔多個欄位屬性。
-
function-attribute-list
-
指定套用至函式的零個或多個屬性。 有效的函式屬性為[callback], [local];指標屬性[ref]、[unique]或[ptr];和使用屬性[string]、[ignore]和[coNtext_handle]。
-
ptr-decl
-
指定 套用 [string] 屬性的選擇性指標宣告子。 指標宣告子與 C 中使用的指標宣告子相同;它是從 * 指示項、 遠方修飾詞和限定詞 const所建構。
-
function-name
-
指定遠端程式的名稱。
-
parameter-attribute-list
-
由零個或多個適用于指定參數類型的屬性所組成。 參數屬性可以採用方向屬性 [in] 和 [out];欄位屬性 [max_is] 和 [size_is];指標屬性 [ref]、 [unique]或 [ptr];和使用屬性 [coNtext_handle] 和 [string] 。 使用方式屬性 [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[];
[string]屬性不能與指定傳輸元素範圍的屬性搭配使用,例如[first_is]、[last_is]和[length_is]。
在多維度陣列上使用時, [字串] 屬性會套用至最右邊的陣列。
若要定義計數位符串,請勿使用 [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);
另請參閱