一种程序接口传参方法、系统及相关设备技术方案

技术编号:27246234 阅读:21 留言:0更新日期:2021-02-04 12:20
本申请实施例提供了一种程序接口传参方法、系统及相关设备,用于扩展现有的可变参数接口函数的可传参数的数据类型。方法包括:将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值;调用通用数据结构类创建目标参数对应的目标对象;将目标对象写入可变参数接口函数的可变参数列表;调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。为读取到的参数的数据类型。为读取到的参数的数据类型。

【技术实现步骤摘要】
一种程序接口传参方法、系统及相关设备


[0001]本申请涉及程序接口传参
,尤其涉及一种程序接口传参方法、系统及相关设备。

技术介绍

[0002]在C、C++语言程序中,经常会遇到接口传参个数和类型不确定的情况,例如,某个程序接口可能会要求传入无穷多个参数,而且参数类型是不固定的。
[0003]目前常用的可变参数的传输方案是基于可变参数接口函数实现,具体而言,通过va_start、va_end、va_arg宏及类型va_list处理可变参数的传输。现有方案中,va_arg宏的可传输的参数类型有限,可以为int、double等类型,但不能指定可传输的参数类型char、short或者float类型,如果传输的参数类型char类型会被自动转换为int类型,如果传输的参数类型float类型会被自动转换为double类型。而且低版本的编译器不支持c++11及以上的标准,所以可变参数模板的方法不是通用的,只有支持c++11标准的高版本编译器才能使用。
[0004]有鉴于此,为解决上述问题,本申请提出了一种新的程序接口传参方法。

技术实现思路

[0005]本申请实施例提供了一种程序接口传参方法、系统及相关设备,用于扩展现有的可变参数接口函数的可传参数的数据类型。
[0006]本申请实施例第一方面提供了一种程序接口传参方法,所述方法包括:
[0007]将待传输的目标参数的数据类型定义成宏,其中,所述目标参数的数据类型的标识字符的字面量作为对应宏定义值;
[0008]调用通用数据结构类创建所述目标参数对应的目标对象;
[0009]将所述目标对象写入可变参数接口函数的可变参数列表;
[0010]调用可变参数接口函数读取参数,当读取到所述目标对象时,根据所述目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
[0011]可选的,作为一种可能的实施方式,本申请实施例中,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:
[0012]设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。
[0013]可选的,作为一种可能的实施方式,所述调用通用数据结构类创建所述目标参数对应的目标对象,还包括:
[0014]将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量。
[0015]可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参方法,还可以包括:
[0016]当读取到的目标对象时,将所述目标对象的万能指针转换成所述目标对象的宏定
义值指示的目标数据类型的指针;
[0017]根据所述目标数据类型的指针读取目标数据。
[0018]可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参方法,还可以包括:
[0019]当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
[0020]在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
[0021]可选的,作为一种可能的实施方式,本申请实施例中,目标参数的数据类型为C或C++语言自带数据类型或者自定义的数据类型。
[0022]本申请实施例第二方面提供了一种程序接口传参系统,可包括:
[0023]第一定义模块,将待传输的目标参数的数据类型定义成宏,其中,所述目标参数的数据类型的标识字符的字面量作为对应宏定义值;
[0024]第一调用模块,调用通用数据结构类创建所述目标参数对应的目标对象,将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量;
[0025]写入模块,将所述目标对象写入可变参数接口函数的可变参数列表;
[0026]第二调用模块,调用可变参数接口函数读取参数,当读取到所述目标对象时,根据所述目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
[0027]可选的,作为一种可能的实施方式,本申请实施例中,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:
[0028]设置模块,用于设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。
[0029]可选的,作为一种可能的实施方式,本申请实施例中所述通用数据结构类中包含万能指针和字符串类型string变量,所述第一调用模块,包括:
[0030]处理单元,用于将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量。
[0031]可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参系统,还可以包括:
[0032]转换模块,当读取到的目标对象时,将所述目标对象的万能指针转换成所述目标对象的宏定义值指示的目标数据类型的指针;
[0033]读取模块,用于根据所述目标数据类型的指针读取目标数据。
[0034]可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参系统,还可以包括:
[0035]第一设置模块,当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
[0036]第二设置模块,在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
[0037]可选的,作为一种可能的实施方式,本申请实施例中目标参数的数据类型为C或C++语言自带数据类型或者自定义的数据类型。
[0038]本申请实施例第三方面提供了一种计算机装置,所述计算机装置包括处理器,所
述处理器用于执行存储器中存储的计算机程序时实现如第一方面及第一方面中任意一种可能的实施方式中的步骤。
[0039]本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面及第一方面中任意一种可能的实施方式中的步骤。
[0040]从以上技术方案可以看出,本申请实施例具有以下优点:
[0041]本申请实施例中,程序接口传参系统将待传输的目标参数的数据类型定义成宏,通过调用通用数据结构类创建目标参数对应的目标对象,调用可变参数接口函数读取参数,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。相对于相关技术,本申请实施例预先定义万能指针和字符串类型string变量的通用数据结构类,通过宏定义以及通用数据结构类中万能指针调用动态调整可变参数的数据类型,避免了直接读取参数时的数据类型限定的问题,扩展了现有的可变参数接口函数的可传参数的数据类型。
附图说明
[0042]图1为本申请实施例中一种程序接口传参方法的一个实施例示意图;
[0043]图2为本申请实施例中一个具体应用实施例中通用数据结构代码示意图;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序接口传参方法,其特征在于,所述方法包括:将待传输的目标参数的数据类型定义成宏,其中,所述目标参数的数据类型的标识字符的字面量作为对应宏定义值;调用通用数据结构类创建所述目标参数对应的目标对象;将所述目标对象写入可变参数接口函数的可变参数列表;调用可变参数接口函数读取参数,当读取到所述目标对象时,根据所述目标对象的字符串类型string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。2.根据权利要求1所述的方法,其特征在于,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。3.根据权利要求2所述的方法,其特征在于,所述调用通用数据结构类创建所述目标参数对应的目标对象,还包括:将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量。4.根据权利要求3所述的方法,其特征在于,还包括:当读取到的目标对象时,将所述目标对象的万能指针转换成所述目标对象的宏定义值指示的目标数据类型的指针;根据所述目标数据类型的指针读取目标数据。5.根据权利要求3所述的方法,其特征在于,还包括:当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。6.根据权利...

【专利技术属性】
技术研发人员:刘均李河金
申请(专利权)人:深圳市元征科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1