如何为VARIANT_BOOL指定默认值?

Mot*_*tti 5 com idl default-value

MS IDL具有指定defaultvalue for参数的语法.我试图为接受以下内容的函数指定默认值VARIANT_BOOL:

[id(42)] HRESULT Foo([in, defaultvalue(VARIANT_TRUE)] VARIANT_BOOL bar);
Run Code Online (Sandbox Code Playgroud)

并收到以下错误消息:

错误MIDL2035:预期的常量表达式

指定默认值bar应该是什么的正确语法是VARIANT_TRUE什么?

Han*_*ant 6

VARIANT_TRUE在WTypes.h中是#defined.您无法在.idl中直接使用它.常见的方法是直接使用该值,就像在mshtml.idl中完成一样,例如:

  [id(42)] HRESULT Foo([in, defaultvalue(-1)] VARIANT_BOOL bar);
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,可以在.idl中添加#define,将其放在靠近顶部的位置:

#define VARIANT_TRUE -1
#define VARIANT_FALSE 0
Run Code Online (Sandbox Code Playgroud)