string 特性

[string] 属性指示一维字符、wchar_t字节 (或等效) 数组或指向此类数组的指针必须被视为字符串。 字符串也可以是数组 (,也可以是指向其字段均为 字节类型的构造) 数组的指针。

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

参数

type-attribute-list

指定应用于类型的一个或多个属性。 有效的类型属性包括 [handle][switch_type][transmit_as];指针属性 [ref][unique][ptr];和用法属性 [context_handle][string][ignore]。 用逗号分隔多个属性。

type-specifier

指定 基类型结构 类型或类型标识符。 可选的存储规范可以位于 类型说明符之前。

standard-declarator

指定标准 C 声明符,例如标识符、指针声明符或数组声明符。 有关详细信息,请参阅 数组和Sized-Pointer属性arrays.和 数组和指针

declarator-list

指定标准 C 声明符,例如标识符、指针声明符和数组声明符。 有关详细信息,请参阅 数组和Sized-Pointer属性arrays.和 数组和指针declarator-list 由一个或多个用逗号分隔的声明符组成。 函数声明符中的参数名称标识符是可选的。

field-attribute-list

指定应用于结构、联合成员或函数参数的零个或多个字段属性。 两个有效的字段属性是 [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

指定 应用 [string] 属性的可选指针声明符。 指针声明符与 C 中使用的指针声明符相同;它由 * 指示符、修饰符(如 far)和限定符 const 构造。

function-name

指定远程过程的名称。

parameter-attribute-list

包含适用于指定参数类型的零个或多个属性。 参数属性可以采用方向属性 [in][out];字段属性 [max_is][size_is];指针属性 [ref][unique][ptr];和用法属性 [context_handle][string]。 usage 属性 [ignore] 不能用作参数属性。 用逗号分隔多个属性。

备注

如果将 [string] 属性用于在运行时确定其边界的数组,则还必须指定 [size_is][max_is] 属性,如以下示例所示:

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

[string] 特性不能与指定传输元素范围的属性一起使用,如 [first_is][last_is][length_is]。

在多维数组上使用时, [string] 属性应用于最右侧的数组。

若要定义计数字符串,请不要使用 [string] 属性。 使用字符数组或基于字符的指针,如下所示:

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

[string] 属性指定存根应使用语言提供的方法来确定字符串的长度。

在 C 中声明字符串时,必须为标记字符串末尾的额外字符分配空间。

示例

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

另请参阅

阵 列

MIDL 基类型

回调 (callback)

字符

const

context_handle

枚举

first_is

处理

接口定义 (IDL) 文件

忽略

last_is

length_is

当地

max_is

pointer_default

Ptr

裁判

size_is

结构

switch_type

transmit_as

联盟

独特

wchar_t