const 属性

const 关键字 (keyword) 修改类型声明的类型或函数参数的类型,防止值变化。

const const-type identifier = const-expression ;

[ typedef [ , type-attribute-list ] ] const const-type declarator-list;

[ typedef [ , type-attribute-list ] ] pointer-type const declarator-list;

[ [ function-attr-list ] ] type-specifier [ ptr-decl ] function-name(
    [ [ parameter-attribute-list ] ] ) const; 

const-type [declarator], [ [ parameter-attribute-list ] ] pointer-type const [declarator], ...);

参数

const-type

指定有效的 MIDL 整数、字符、字符串或布尔类型。 有效的 MIDL 类型包括 smallshortlongcharchar *wchar_twchar_t *bytebyte *void *。 整数和字符类型可以是 有符号 的,也可以 是无符号的。

identifier

指定有效的 MIDL 标识符。 有效的 MIDL 标识符由最多 31 个字母数字和/或下划线字符组成,并且必须以字母或下划线字符开头。

const-expression

指定适用于指定类型的表达式、标识符或数值或字符常量:常量整数文本或整数常量的常量整数表达式;可在编译时为布尔类型计算的 布尔 表达式; 字符 类型的单字符常量;和 [string] 类型的字符串常量。 void * 类型只能初始化为 NULL

type-attribute-list

指定应用于类型的一个或多个属性。

pointer-type

指定有效的 MIDL 指针类型。

declarator 和 declarator-list

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

function-attr-list

指定应用于函数的零个或多个属性。 有效的函数属性为 [callback][local];指针属性 [ref][unique][ptr];和用法属性 [string][ignore][context_handle]

type-specifier

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

ptr-decl

指定零个或多个指针声明符。 指针声明符与 C 中使用的指针声明符相同。它由 * 指示符、修饰符(如 far)和限定符 常值构造。

function-name

指定远程过程的名称。

parameter-attribute-list

指定适用于指定参数类型的零个或多个方向属性、字段属性、用法属性和指针属性。 用逗号分隔多个属性。

备注

MIDL 允许在 IDL 文件的接口正文中声明常量整数、字符、字符串和布尔类型。 Const 类型声明在生成的头文件中作为 #define 指令重现。

DCE IDL 编译器不支持常量表达式。 因此,使用 MIDL 编译器 /osf 开关时,此功能不可用。

以前定义的常量可用作后续常量的赋值。 常量整型表达式的值根据 C 转换规则自动转换为相应的整数类型。

字符常量的值必须是单引号 ASCII 字符。 当字符常量是单引号字符本身 (') 时,反斜杠字符 (\) 必须位于单引号字符前面,如 \'中所示。

字符串常量的值必须是双引号字符串。 在字符串中,反斜杠 (\) 字符必须位于文本双引号字符之前, ( ) ,如 \”。 在字符串中,反斜杠字符 (\) 表示转义字符。 字符串常量最多可以包含 255 个字符。

NULLvoid * 类型的常量的唯一有效值。 与 const 声明关联的任何属性都将被忽略。

MIDL 编译器不会检查常量初始化中的范围错误。 例如,当指定“const short x = 0xFFFFFFFF;”时,MIDL 编译器不会报告错误,并且初始值设定项将在生成的头文件中重现。

示例

const void *  p1        = NULL; 
const char    my_char1  = 'a'; 
const char    my_char2  = my_char1; 
const wchar_t my_wchar3 = L'a'; 
const wchar_t * pszNote = L"Note"; 
const unsigned short int x = 123; 
 
typedef [string] const char *LPCSTR; 
 
HRESULT GetName([out] wchar_t * const pszName );

另请参阅

阵 列

MIDL 基类型

布尔

字节

回调 (callback)

字符

context_handle

枚举

接口定义 (IDL) 文件

忽略

当地

/osf

Ptr

裁判

签署

string

结构

联盟

独特

符号

无效

wchar_t