题
是否有MIDL方法声明没有恒定的引用????
例如
[id(1), helpstring("My Method")]
HRESULT MyMethod(
[in] IID & const rclsid
);
的
HRESULT MyMethod(
IID const &rclsid
);
解决方案
MIDL真的不支持参考参数,它仅支持“中”和“out”的参数。所以,如果你传递一个参考,它是一个指针值(这个问题是可观测只是语法糖 - 如果您对我们的方法签名的回调函数或接口,更改为引用的将是从回调观察到的,但变为一个[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
不隶属于 StackOverflow