ref (atributo)

El [ atributo ref ] identifica un puntero de referencia. Se usa simplemente para representar un nivel de direccionamiento indirecto.

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]]
    , ...);

Parámetros

type-attribute-list

Especifica uno o varios atributos que se aplican al tipo. Los atributos de tipo válidos incluyen el identificador , el tipo de modificador , transmitir como ; los atributos de puntero [ ] [ _ ] [ _ ] [ ref ], [ unique ] o [ ptr; ] [ _ ] [ ] [ ] y el identificador de contexto de los atributos de uso , la cadena y omitir . Separe varios atributos con comas.

type-specifier

Especifica un tipo base, struct, unióno tipo de enumeración o identificador de tipo. Una especificación de almacenamiento opcional puede preceder al especificador de tipo.

standard-declarator

Especifica un declarador de C estándar, como un identificador, un declarador de puntero o un declarador de matriz. Para obtener más información, vea Array and Sized-Pointer Attributes, arrays, and Arrays and Pointers.

declarator-list

Especifica declaradores estándar de C, como identificadores, declaradores de puntero y declaradores de matriz. Para obtener más información, vea Array and Sized-Pointer Attributes, arrays, and Arrays and Pointers. La lista de declaradores consta de uno o varios declaradores separados por comas. El identificador de nombre de parámetro en el declarador de función es opcional.

field-attribute-list

Especifica cero o más atributos de campo que se aplican a la estructura, miembro de unión o parámetro de función. Los atributos de campo válidos incluyen primero , el último es , length es , max es , size es ; la cadena de atributos de uso , ignore y el identificador de contexto ; el atributo de puntero [ _ ] [ _ ] [ _ ] [ _ ] [ _ ] [ ] [ ] [ _ ] [ ref ], unique [ ] [ ] [ _ ] o ptr ; y el tipo de modificador de atributo union . Separe varios atributos de campo con comas.

function-attribute-list

Especifica cero o más atributos que se aplican a la función. Los atributos de función válidos son la devolución de llamada , local; el atributo de puntero [ ] [ ] [ ] ref, [ unique ] o [ ptr; ] [ ] [ ] [ _ ] y la cadena de atributos de uso , ignore y el identificador de contexto .

ptr-decl

Especifica al menos un declarador de puntero al que se aplica el atributo [ ref. ] Un declarador de puntero es el mismo que el declarador de puntero usado en C; se construye a partir del * designador, modificadores como , y el calificador const.

function-name

Especifica el nombre del procedimiento remoto.

parameter-attribute-list

Consta de cero o más atributos adecuados para el tipo de parámetro especificado. Los atributos de parámetro pueden tomar los atributos direccionales de entrada y salida; los atributos de campo primero son , el último es , length es , max es , size es y switch type ; el atributo de puntero [ ] [ ] [ _ ] [ _ ] [ _ ] [ _ ] [ _ ] [ _ ] [ ref ], unique o [ ] [ ptr; ] [ _ ] [ ] y el identificador de contexto de los atributos de uso y la cadena . El atributo usage [ ignore no ] se puede usar como atributo de parámetro. Separe varios atributos con comas.

Observaciones

Un atributo de puntero se puede aplicar como atributo de tipo, como atributo de campo que se aplica a un miembro de estructura, miembro de unión o parámetro; o como un atributo de función que se aplica al tipo de valor devuelto de la función. El atributo de puntero también puede aparecer con la palabra [ clave default _ del ] puntero.

Un puntero de referencia tiene las siguientes características:

  • Siempre apunta al almacenamiento válido; nunca tiene el valor NULL. Siempre se puede desreferenciar un puntero de referencia.
  • Nunca cambia durante una llamada. Un puntero de referencia siempre apunta al mismo almacenamiento en el cliente antes y después de la llamada.
  • No asigna nueva memoria en el cliente. Los datos devueltos desde el servidor se escriben en el almacenamiento existente especificado por el valor del puntero de referencia antes de la llamada.
  • No provoca alias. Storage a la que apunta un puntero de referencia no se puede acceder desde ningún otro nombre de la función.

Un puntero de referencia no se puede usar como el tipo de un puntero devuelto por una función.

Si no se especifica ningún atributo para un parámetro de puntero de nivel superior, se trata como un puntero de referencia.

Ejemplos

[unique] char * GetFirstName( 
    [in, ref] char * pszFullName);

Vea también

Matrices

Matrices y punteros

Atributos de matriz Sized-Pointer matriz

Tipos base midl

devolución de llamada

const

identificador de _ contexto

Enum

en primer _ lugar es

handle

Ignorar

el _ último es

length _ es

Local

max _ is

out

Ptr

el _ tamaño es

Cadena

Estructura

tipo _ de conmutador

transmitir _ como

union

Único