如何为 VARIANT_BOOL 指定默认值?
MS IDL 有用于指定默认值
的语法对于参数。 我尝试为接受 VARIANT_BOOL 的函数指定默认值:
[id(42)] HRESULT Foo([in, defaultvalue(VARIANT_TRUE)] VARIANT_BOOL bar);
并收到以下错误消息:
错误 MIDL2035:需要常量表达式
bar
的默认值应为 VARIANT_TRUE
的正确语法是什么?
MS IDL has syntax for specifying a defaultvalue
for parameters.
I tried to specify a default value for a function that accepts a VARIANT_BOOL
:
[id(42)] HRESULT Foo([in, defaultvalue(VARIANT_TRUE)] VARIANT_BOOL bar);
And got the following error message:
error MIDL2035 : constant expression expected
What is the correct syntax for specifying that the default value of bar
should be VARIANT_TRUE
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
VARIANT_TRUE 是在 WTypes.h 中定义的。您不能直接在 .idl 中使用它。常见的方法是直接使用该值,就像在 mshtml.idl 中所做的那样:
或者如果您愿意,您可以将 #define 添加到 .idl 中,将其放在靠近顶部的位置:
VARIANT_TRUE is #defined in WTypes.h. You can't directly use it in your .idl. The common approach is to simply use the value directly, like it is done in mshtml.idl for example:
Or you can add a #define to your .idl if you prefer, put it somewhere near the top:
尽管不应该混淆
bool
、BOOL
和VARIANT_BOOL
看来在 idl 中BOOL
被解释为VARIANT_BOOL
值。当从 VBScript 调用且未指定任何参数时,它会以
-1
的形式到达 C++ 代码。我不确定哪种方式更惯用
TRUE
或 @Hans 建议的-1
。Although one should not mix up
bool
,BOOL
andVARIANT_BOOL
it appears that in idlBOOL
is interpreted as aVARIANT_BOOL
value.When called from VBScript with no parameter specified this reaches the C++ code as
-1
.I'm not sure which way is more idiomatic
TRUE
or as @Hans suggested-1
.