[发明专利]一种程序接口传参方法、系统及相关设备有效
| 申请号: | 202011163047.1 | 申请日: | 2020-10-27 |
| 公开(公告)号: | CN112306473B | 公开(公告)日: | 2023-10-20 |
| 发明(设计)人: | 刘均;李河金 | 申请(专利权)人: | 深圳市元征科技股份有限公司 |
| 主分类号: | G06F8/30 | 分类号: | G06F8/30 |
| 代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王兆林 |
| 地址: | 518000 广东省深圳市龙*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 程序 接口 方法 系统 相关 设备 | ||
本申请实施例提供了一种程序接口传参方法、系统及相关设备,用于扩展现有的可变参数接口函数的可传参数的数据类型。方法包括:将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值;调用通用数据结构类创建目标参数对应的目标对象;将目标对象写入可变参数接口函数的可变参数列表;调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
技术领域
本申请涉及程序接口传参技术领域,尤其涉及一种程序接口传参方法、系统及相关设备。
背景技术
在C、C++语言程序中,经常会遇到接口传参个数和类型不确定的情况,例如,某个程序接口可能会要求传入无穷多个参数,而且参数类型是不固定的。
目前常用的可变参数的传输方案是基于可变参数接口函数实现,具体而言,通过va_start、va_end、va_arg宏及类型va_list处理可变参数的传输。现有方案中,va_arg宏的可传输的参数类型有限,可以为int、double等类型,但不能指定可传输的参数类型char、short或者float类型,如果传输的参数类型char类型会被自动转换为int类型,如果传输的参数类型float类型会被自动转换为double类型。而且低版本的编译器不支持c++11及以上的标准,所以可变参数模板的方法不是通用的,只有支持c++11标准的高版本编译器才能使用。
有鉴于此,为解决上述问题,本申请提出了一种新的程序接口传参方法。
发明内容
本申请实施例提供了一种程序接口传参方法、系统及相关设备,用于扩展现有的可变参数接口函数的可传参数的数据类型。
本申请实施例第一方面提供了一种程序接口传参方法,所述方法包括:
将待传输的目标参数的数据类型定义成宏,其中,所述目标参数的数据类型的标识字符的字面量作为对应宏定义值;
调用通用数据结构类创建所述目标参数对应的目标对象;
将所述目标对象写入可变参数接口函数的可变参数列表;
调用可变参数接口函数读取参数,当读取到所述目标对象时,根据所述目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
可选的,作为一种可能的实施方式,本申请实施例中,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:
设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。
可选的,作为一种可能的实施方式,所述调用通用数据结构类创建所述目标参数对应的目标对象,还包括:
将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量。
可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参方法,还可以包括:
当读取到的目标对象时,将所述目标对象的万能指针转换成所述目标对象的宏定义值指示的目标数据类型的指针;
根据所述目标数据类型的指针读取目标数据。
可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参方法,还可以包括:
当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
可选的,作为一种可能的实施方式,本申请实施例中,目标参数的数据类型为C或C++语言自带数据类型或者自定义的数据类型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市元征科技股份有限公司,未经深圳市元征科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011163047.1/2.html,转载请声明来源钻瓜专利网。





