string (atributo)

El atributo [string] indica que la matriz unidimensional char, wchar_t, byte (o equivalente) o el puntero a dicha matriz debe tratarse como una cadena. La cadena también puede ser una matriz (o un puntero a una matriz) de construcciones cuyos campos son todos de tipo byte.

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

Parámetros

type-attribute-list

Especifica uno o varios atributos que se aplican a un tipo. Los atributos de tipo válidos incluyen [handle], [switch_type], [transmit_as]; el atributo de puntero [ref], [unique]o [ptr]; y los atributos de uso [context_handle], [string] y [ignore]. Separe varios atributos con comas.

type-specifier

Especifica un tipo base, un tipo de estructura o un identificador de tipo. Una especificación de almacenamiento opcional puede preceder al especificador de tipos.

declarador estándar

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 de C estándar, 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 parameter-name del declarador de función es opcional.

field-attribute-list

Especifica cero o más atributos de campo que se aplican a la estructura, al miembro de unión o al parámetro de función. Los dos atributos de campo válidos son [max_is] y [size_is]; los atributos de uso [string], [ignore]y [context_handle], el atributo de puntero [ref], [unique]o [ptr], y el atributo union [switch_type]. 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 [devolución de llamada], [local]; el atributo de puntero [ref], [unique]o [ptr]; y los atributos de uso [string], [ignore]y [context_handle].

ptr-decl

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

nombre de función

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 [in] y [out]; los atributos de campo [max_is] y [size_is]; el atributo de puntero [ref], [unique]o [ptr]; y los atributos de uso [context_handle] y [string]. El atributo de uso [ignore] no se puede usar como atributo de parámetro. Separe varios atributos con comas.

Comentarios

Si el atributo [string] se usa con una matriz cuyos límites se determinan en tiempo de ejecución, también debe especificar un atributo [size_is] o [max_is], como en el ejemplo siguiente:

/* a string that can hold up to MAX_STRING_LENGTH characters */
typedef [string, max_is(MAX_STRING_LENGTH)] char line[];

El atributo [string] no se puede usar con atributos que especifican el intervalo de elementos transmitidos, como [first_is], [last_is] y [length_is].

Cuando se usa en matrices multidimensionales, el atributo [string] se aplica a la matriz más a la derecha.

Para definir una cadena contada, no use el atributo [string]. Use una matriz de caracteres o un puntero basado en caracteres, como los siguientes:

typedef struct 
{ 
    unsigned short size; 
    unsigned short length; 
    [size_is(size), length_is(length)] char string[*]; 
} counted_string;

El atributo [string] especifica que el código auxiliar debe usar un método proporcionado por el lenguaje para determinar la longitud de las cadenas.

Al declarar cadenas en C, debe asignar espacio para un carácter adicional que marque el final de la cadena.

Ejemplos

/* a string type that can hold up to 80 characters */ 
typedef [string] char line[81]; 
 
HRESULT Proc1([in, string] char * pszName);

Vea también

Matrices

Tipos base MIDL

devolución de llamada

Char

const

context_handle

Enum

first_is

Manejar

Archivo de definición de interfaz (IDL)

Ignorar

last_is

length_is

Local

max_is

pointer_default

Ptr

Ref

size_is

Estructura

switch_type

transmit_as

union

Único

wchar_t