2
MIDL方法声明中是否没有常量引用?MIDL(常量)参考文献
例如。
[id(1), helpstring("My Method")]
HRESULT MyMethod(
[in] IID & const rclsid
);
为
HRESULT MyMethod(
IID const &rclsid
);
MIDL方法声明中是否没有常量引用?MIDL(常量)参考文献
例如。
[id(1), helpstring("My Method")]
HRESULT MyMethod(
[in] IID & const rclsid
);
为
HRESULT MyMethod(
IID const &rclsid
);
MIDL真的不支持参考的参数,它仅支持 “in” 和 “出” 的参数。所以如果你传入一个引用,它只是一个指向该值的语法糖(问题是可观察性 - 如果在我们的方法签名中有一个回调函数或接口,则从回调中可以看到对引用的更改,但改变一个[out]参数是不可见的,直到函数返回。
此外,“&常量”和“常量&”丢失之间的差别。如果你看一下REFGUID的定义,你会看到他们只用一种形式的“常量”的C++代码:
#ifdef __midl_proxy
#define __MIDL_CONST
#else
#define __MIDL_CONST const
#endif
#ifndef _REFGUID_DEFINED
#define _REFGUID_DEFINED
#ifdef __cplusplus
#define REFGUID const GUID &
#else
#define REFGUID const GUID * __MIDL_CONST
#endif
#endif
d3d11.idl使用REFGUID:/我不知道该如何看待这个 做o〜o 相当不错我猜是因为它的工作原理;问题仍然存在,因为我不明白如何REFGUID甚至可能,如果你不能,但我似乎无法找到一个例子...... – 2010-06-12 09:03:49
保罗改变了什么?我使用的是一个而不是一个?我有时候那样做... – 2010-06-12 18:14:29