是否有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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top