首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MIDL (常量)引用

MIDL (常量)引用
EN

Stack Overflow用户
提问于 2010-06-12 16:55:18
回答 1查看 877关注 0票数 2

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

例如:

代码语言:javascript
复制
[id(1), helpstring("My Method")]
HRESULT MyMethod(
    [in] IID & const rclsid
);

代码语言:javascript
复制
HRESULT MyMethod(
    IID const &rclsid
);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-12 21:42:32

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

此外,"& const“和"const &”之间的差异也丢失了。如果你看看REFGUID的定义,你会发现他们只对C++代码使用了一种形式的"const“:

代码语言:javascript
复制
#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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3028076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档