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]]
, ...);
parameters
-
type-attribute-list
-
指定应用于类型的一个或多个属性。 有效的类型属性包括 [handle]、 [switch_type]、 [transmit_as];指针属性 [ref]、 [unique]或 [ptr];和用法属性 [context_handle]、 [string]和 [ignore]。 用逗号分隔多个属性。
-
type-specifier
-
standard-declarator
-
指定标准 C 声明符,例如标识符、指针声明符或数组声明符。 有关详细信息,请参阅 数组和Sized-Pointer属性、 数组和 数组和指针。
-
declarator-list
-
指定标准 C 声明符,例如标识符、指针声明符和数组声明符。 有关详细信息,请参阅 数组和Sized-Pointer属性、 数组和 数组和指针。 声明符列表由一个或多个用逗号分隔的声明符组成。 函数声明符中的参数名称标识符是可选的。
-
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 中使用的指针声明符相同;它由 * 指示符、修饰符(如 far)和限定符 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]。 usage 属性 [ignore] 不能用作参数属性。 用逗号分隔多个属性。
备注
指针属性可以作为类型属性应用,作为应用于结构成员、联合成员或参数的字段属性;或 作为应用于函数返回类型的函数属性。 指针属性还可以与 [pointer_default] 关键字 (keyword) 一起显示。
引用指针具有以下特征:
- 始终指向有效存储;从不具有 NULL 值。 始终可以取消引用引用指针。
- 在通话期间永远不会更改。 引用指针始终指向调用前后客户端上的同一存储。
- 不在客户端上分配新内存。 从服务器返回的数据将写入到调用前由引用指针的值指定的现有存储中。
- 不会导致别名。 不能从函数中的任何其他名称访问引用指针指向的存储。
引用指针不能用作函数返回的指针的类型。
如果未为顶级指针参数指定任何属性,则会将其视为引用指针。
示例
[unique] char * GetFirstName(
[in, ref] char * pszFullName);
另请参阅