[in]
、[out]
、[in, out]
和[out, retval]
的区别是什么?
从我读过的一些代码中,我认为[in]
用于将参数传递给一个方法。[out, retval]
是返回一个值。[in, out]
用于表示我们可以覆盖该参数,并且它是返回的参数。但是,我似乎最后一个属性可以在方法的创建上多次使用,为什么呢?这里的[out]
是多少?
我想我讲错了,有人能解释一下这些属性的区别吗?
这些是用于在IDL文件中规范com接口方法参数的MIDL语言属性。说明符的含义来自它们的名称,通常可以理解为通过值(in)、引用(in、out)和返回值(out、retval)传递参数。Out表示只返回值——但是通过形参传递,因此该方法可以返回多个值。
在文档中:[In]属性指定输入参数,[out] -仅输出参数,[In, out]-输入和输出,[out, retval] -返回值。不要忘记,低级IDL描述可以使用这个com对象在不同的语言中使用。例如,我们可以有IDL描述(不严格):
// [out, retval] must be last
genererate([in] item_name, [out] size, [out, retval] res);
,用法如下:
var sz; // will be initialized in the COM-method
var res = FooObj.generate("new_item", sz); // FooObj is our COM-object