在定义C++, C通用接口函数时让C++接口支持默认参数

本文介绍了如何在SOUI4开发中,通过宏定义实现C++接口函数支持默认参数,以兼容C语言调用。讨论了在C++函数允许设置默认参数,而C函数不支持的情况下,如何在不改变原有接口的情况下,解决C++和C语言之间的兼容性问题。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
在SOUI4的开发中,所有SOUI核心对象都采用了一种类似COM接口的技术来导出接口。

这所以采用这种方案,主要目的是为了让SOUI4支持C语言调用,扩展SOUI的使用场景。

众所周知,C++函数的参数支持配置默认值,但C函数是不支持默认值的。

比如定义了类似下面一个接口

1 #undef INTERFACE
2 #define INTERFACE IRenderTarget
3 DECLARE\_INTERFACE\_(IRenderTarget, IObjRef)
4 {
5 //...
6  STDMETHOD\_(HRESULT, SelectObject)
7     (THIS\_ IRenderObj * pObj, IRenderObj * *ppOldObj) PURE;
8 //...
9 };

IRenderTarget::SelectObject方法的功能是给当前的RenderTarget选择一个绘图对象,同时如果ppOldObj不为NULL,则通过ppOldObj返回当前正在使用的同类型绘图对象。

很多时候用户并不关心原来的对象,所以通常给它置为NULL即可。这也是SOUI3及之前版本的默认参数。

由于4.0中,该接口可能是在C++中引用&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值