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 宣告子,例如識別碼、指標宣告子或陣列宣告子。 如需詳細資訊,請參閱 陣列和Sized-Pointer屬性arrays.和 陣列和指標

declarator-list

指定標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 如需詳細資訊,請參閱 陣列和Sized-Pointer屬性arrays.和 陣列和指標宣告子清單是由一或多個宣告子所組成,並以逗號分隔。 函式宣告子中的參數名稱識別碼是選擇性的。

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 中使用的指標宣告子相同;它是由 * 指示項、 方修飾詞和限定詞 常數所建構。

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] 屬性會套用至最右邊的陣列。

若要定義計算字串,請勿使用 [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);

另請參閱

陣列

MIDL 基底類型

回檔

char

const

coNtext_handle

枚舉

first_is

處理

介面定義 (IDL) 檔案

忽略

last_is

length_is

當地

max_is

pointer_default

ptr

ref

size_is

結構

switch_type

transmit_as

union

獨特

wchar_t