Windows MIDL(常数)引用

Windows MIDL(常数)引用,windows,com,midl,Windows,Com,Midl,MIDL方法声明中是否没有常量引用 例如 为了 MIDL并不真正支持引用参数,它只支持“in”和“out”参数。因此,如果你传入一个引用,它只是一个指向该值的指针的语法糖(问题是可观察性——如果你在我们的方法签名中有一个回调函数或接口,那么对引用的更改可以从回调中观察到,但是对[out]参数的更改直到函数返回才可见) 此外,“const”和“const &”之间的区别已经丢失。如果你查看ReGuID的定义,你会发现他们只使用一种形式的“const”用于C++代码: #ifdef __midl_p

MIDL方法声明中是否没有常量引用

例如

为了


MIDL并不真正支持引用参数,它只支持“in”和“out”参数。因此,如果你传入一个引用,它只是一个指向该值的指针的语法糖(问题是可观察性——如果你在我们的方法签名中有一个回调函数或接口,那么对引用的更改可以从回调中观察到,但是对[out]参数的更改直到函数返回才可见)

此外,“const”和“const &”之间的区别已经丢失。如果你查看ReGuID的定义,你会发现他们只使用一种形式的“const”用于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是如何可能的,但我似乎也找不到一个例子……保罗做了什么改变?我用了是而不是是???我有时会这么做。。。
HRESULT MyMethod(
    IID const &rclsid
);
#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