ref 屬性
[ref]屬性會識別參考指標。 它只是用來表示間接取值層級。
pointer_default(ref)
typedef [ ref [[ , type-attribute-list ]] ] type-specifier declarator-list;
typedef [ struct | union ]
{
[ ref [[ , field-attribute-list ]] ] type-specifier declarator-list;
...}
[[ [ function-attribute-list ] ]] type-specifier [[ptr-decl]] function-name(
[ ref [[ , parameter-attribute-list ]] ] type-specifier [[standard-declarator]]
, ...);
參數
-
type-attribute-list
-
指定套用至類型的一或多個屬性。 有效的類型屬性包括 [handle]、 [switch_type]、 [transmit_as];指標屬性 [ref]、 [unique]或 [ptr];和使用方式屬性 [coNtext_handle]、 [string]和 [ignore]。 以逗號分隔多個屬性。
-
type-specifier
-
指定 基底類型、 結構、 等位或 列舉 類型或類型識別碼。 選擇性的儲存體規格可以在 type-specifier之前。
-
standard-declarator
-
指定標準 C 宣告子,例如識別碼、指標宣告子或陣列宣告子。 如需詳細資訊,請參閱 陣列和Sized-Pointer屬性、 陣列和 陣列和指標。
-
declarator-list
-
指定標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 如需詳細資訊,請參閱 陣列和Sized-Pointer屬性、 陣列和 陣列和指標。 declarator-list是由一或多個宣告子所組成,並以逗號分隔。 函式宣告子中的參數名稱識別碼是選擇性的。
-
field-attribute-list
-
指定套用至結構、等位成員或函式參數的零個或多個欄位屬性。 有效的欄位屬性包括[first_is]、[last_is]、[length_is]、[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
-
指定至少一個套用 [ref] 屬性的指標宣告子。 指標宣告子與 C 中使用的指標宣告子相同;它是從 * 指示項、 遠方修飾詞和限定詞 const所建構。
-
function-name
-
指定遠端程式的名稱。
-
parameter-attribute-list
-
由零個或多個適用于指定參數類型的屬性所組成。 參數屬性可以採用方向屬性 [in] 和 [out];欄位屬性 [first_is]、 [last_is]、 [length_is]、 [max_is]、 [size_is]和 [switch_type];指標屬性 [ref]、 [unique]或 [ptr];和使用屬性 [coNtext_handle] 和 [string] 。 使用方式屬性 [ignore] 無法當做參數屬性使用。 以逗號分隔多個屬性。
備註
指標屬性可以套用為類型屬性,做為套用至結構成員、等位成員或參數的欄位屬性;或 作為套用至函式傳回型別的函式屬性。 指標屬性也可以與 [pointer_default] 關鍵字一起出現。
參考指標具有下列特性:
- 一律指向有效的儲存體;永遠不會有 Null值。 參考指標一律可以取值。
- 在呼叫期間永遠不會變更。 參考指標一律指向呼叫前後用戶端上的相同儲存體。
- 不會在用戶端上配置新的記憶體。 從伺服器傳回的資料會寫入呼叫之前參考指標的值所指定的現有儲存體。
- 不會導致別名。 參考指標所指向的儲存體無法從函式中的其他名稱觸達。
參考指標不能當做函式所傳回的指標類型使用。
如果未為最上層指標參數指定任何屬性,則會將其視為參考指標。
範例
[unique] char * GetFirstName(
[in, ref] char * pszFullName);
另請參閱