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]; атрибуты указателя [ссылка], [уникальный], или [ptr]; и атрибуты использования [context_handle], [строка] и [игнорировать]. Разделяйте несколько атрибутов запятыми.
-
type-specifier
-
Указывает базовый тип, структуру, объединение, тип перечисления или идентификатор типа. Необязательная спецификация хранилища может предшествовать описательу типа.
-
Стандартный декларатор
-
Указывает стандартный декларатор C, например идентификатор, декларатор указателя или декларатор массива. Дополнительные сведения см. в разделе Атрибуты массива и Sized-Pointer, массивы и массивы и указатели.
-
Declarator-list
-
Задает стандартные деклараторы C, такие как идентификаторы, деклараторы указателей и деклараторы массива. Дополнительные сведения см. в разделе Атрибуты массива и Sized-Pointer, массивы и массивы и указатели. Список деклараторов состоит из одного или нескольких деклараторов, разделенных запятыми. Идентификатор parameter-name в деклараторе функции является необязательным.
-
field-attribute-list
-
Указывает ноль или несколько атрибутов поля, которые применяются к параметру структуры, члена объединения или функции. Допустимые атрибуты полей: [first_is], [last_is], [length_is], [max_is], [size_is]; атрибуты использования [string], [ignore] и [context_handle]; атрибут указателя [ref], [unique], или [ptr]; и атрибут union [switch_type]. Разделяйте несколько атрибутов полей запятыми.
-
function-attribute-list
-
Указывает ноль или несколько атрибутов, применяемых к функции. Допустимые атрибуты функции: [callback], [local]; атрибут указателя [ref], [unique], или [ptr]; и атрибуты использования [string], [ignore] и [context_handle].
-
ptr-decl
-
Указывает по крайней мере один декларатор указателя, к которому применяется атрибут [ссылка] . Декларатор указателя совпадает с декларатором указателя, используемым в 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] и [строка]. Атрибут использования [ignore] нельзя использовать в качестве атрибута параметра. Разделяйте несколько атрибутов запятыми.
Комментарии
Атрибут указателя можно применять как атрибут типа, как атрибут поля, который применяется к элементу структуры, элементу объединения или параметру; или как атрибут функции, который применяется к типу возвращаемого значения функции. Атрибут указателя также может отображаться с ключевое слово [pointer_default].
Указатель на ссылку имеет следующие характеристики:
- Всегда указывает на допустимое хранилище; никогда не имеет значения NULL. Ссылочный указатель всегда можно разыменовыть.
- Никогда не изменяется во время вызова. Указатель на ссылку всегда указывает на одно и то же хранилище на клиенте до и после вызова.
- Не выделяет новую память на клиенте. Данные, возвращаемые сервером, записываются в существующее хранилище, заданное значением указателя ссылки перед вызовом .
- Не вызывает псевдонимов. Хранилище, на которое указывает указатель ссылки, не может быть достигнуто из любого другого имени в функции.
Указатель на ссылку нельзя использовать в качестве типа указателя, возвращаемого функцией.
Если для параметра указателя верхнего уровня не указан атрибут, он обрабатывается как ссылочный указатель.
Примеры
[unique] char * GetFirstName(
[in, ref] char * pszFullName);
См. также раздел