[defaultvalue] 属性允许指定类型化可选参数的默认值。
interface interface-name
{
return-type function-name(
mandatory-param-list,
[[attribute-list,] defaultvalue(value)] param-type param-name
[ , optional-param-list]);
}
参数
-
interface-name
-
指定接口的名称。
-
return-type
-
指定函数的返回类型。
-
function-name
-
指定 将应用 [defaultvalue] 属性的函数的名称。
-
mandatory-param-list
-
指定一个或多个必需的参数。
-
attribute-list
-
指定一个或多个属性的列表(用逗号分隔)应用于参数。
-
param-type
-
指示可选参数的类型。
-
param-name
-
指定可选参数的名称。
-
optional-param-list
-
指定零个或多个附加参数,每个参数必须具有默认值。
注解
为参数指定的默认值可以是任何常量,也可以是解析为常量(可由 VARIANT 表示)的表达式。 具体而言,不能将 [defaultvalue] 属性应用于结构、数组或 SAFEARRAY 类型的参数。
MIDL 编译器接受以下参数排序(从左到右):
- 必需参数(没有 [defaultvalue] 或 [可选] 属性的参数)
- 带或不带 [defaultvalue] 属性的可选参数,
- 具有 [可选] 属性且没有 [defaultvalue] 属性的参数,
- [lcid] 参数(如果有)
- [retval] 参数
例子
interface IFace : IUnknown
{
HRESULT Ex1([defaultvalue(44)] LONG i);
HRESULT Ex2([defaultvalue(44)] SHORT i);
...
};
interface QueryDef : IUnknown
{
HRESULT OpenRecordset( [in, defaultvalue(DBOPENTABLE)]
LONG Type,
[out,retval] Recordset **pprst);
}
// Type is now known to be a LONG type (good for browser in VBA and
// good for a C/C++ programmer) and has a default value of
// DBOPENTABLE
另请参阅