CN112306473A - 一种程序接口传参方法、系统及相关设备 - Google Patents
一种程序接口传参方法、系统及相关设备 Download PDFInfo
- Publication number
- CN112306473A CN112306473A CN202011163047.1A CN202011163047A CN112306473A CN 112306473 A CN112306473 A CN 112306473A CN 202011163047 A CN202011163047 A CN 202011163047A CN 112306473 A CN112306473 A CN 112306473A
- Authority
- CN
- China
- Prior art keywords
- parameter
- target
- target object
- variable
- data type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Communication Control (AREA)
Abstract
本申请实施例提供了一种程序接口传参方法、系统及相关设备,用于扩展现有的可变参数接口函数的可传参数的数据类型。方法包括:将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值;调用通用数据结构类创建目标参数对应的目标对象;将目标对象写入可变参数接口函数的可变参数列表;调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
Description
技术领域
本申请涉及程序接口传参技术领域,尤其涉及一种程序接口传参方法、系统及相关设备。
背景技术
在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++语言自带数据类型或者自定义的数据类型。
本申请实施例第二方面提供了一种程序接口传参系统,可包括:
第一定义模块,将待传输的目标参数的数据类型定义成宏,其中,所述目标参数的数据类型的标识字符的字面量作为对应宏定义值;
第一调用模块,调用通用数据结构类创建所述目标参数对应的目标对象,将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量;
写入模块,将所述目标对象写入可变参数接口函数的可变参数列表;
第二调用模块,调用可变参数接口函数读取参数,当读取到所述目标对象时,根据所述目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
可选的,作为一种可能的实施方式,本申请实施例中,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:
设置模块,用于设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。
可选的,作为一种可能的实施方式,本申请实施例中所述通用数据结构类中包含万能指针和字符串类型string变量,所述第一调用模块,包括:
处理单元,用于将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量。
可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参系统,还可以包括:
转换模块,当读取到的目标对象时,将所述目标对象的万能指针转换成所述目标对象的宏定义值指示的目标数据类型的指针;
读取模块,用于根据所述目标数据类型的指针读取目标数据。
可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参系统,还可以包括:
第一设置模块,当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
第二设置模块,在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
可选的,作为一种可能的实施方式,本申请实施例中目标参数的数据类型为C或C++语言自带数据类型或者自定义的数据类型。
本申请实施例第三方面提供了一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面及第一方面中任意一种可能的实施方式中的步骤。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面及第一方面中任意一种可能的实施方式中的步骤。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,程序接口传参系统将待传输的目标参数的数据类型定义成宏,通过调用通用数据结构类创建目标参数对应的目标对象,调用可变参数接口函数读取参数,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。相对于相关技术,本申请实施例预先定义万能指针和字符串类型string变量的通用数据结构类,通过宏定义以及通用数据结构类中万能指针调用动态调整可变参数的数据类型,避免了直接读取参数时的数据类型限定的问题,扩展了现有的可变参数接口函数的可传参数的数据类型。
附图说明
图1为本申请实施例中一种程序接口传参方法的一个实施例示意图;
图2为本申请实施例中一个具体应用实施例中通用数据结构代码示意图;
图3为本申请实施例中一个具体应用实施例中可变参数接口代码示意图;
图4为本申请实施例中一种程序接口传参系统的一个实施例示意图;
图5为本申请实施例中一种计算机装置的一个实施例示意图。
具体实施方式
本申请实施例提供了一种程序接口传参方法、系统及相关设备,用于扩展现有的可变参数接口函数的可传参数的数据类型。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请涉及可变参数接口函数,下面将对相关技术方案中的可变参数接口函数的实现进行介绍。可变参数接口函数功能由四个宏(va_start、va_end、va_arg、va_list)的调用实现,C或C++编程中,<stdarg.h>里面va_start、va_end、va_arg、va_list的宏定义如下:
typedef char*va_list;
void va_start(va_list ap,prev_param);/*ANSI version*/
type va_arg(va_list ap,type);
void va_end(va_list ap);
va_list是一个字符指针,可以理解为指向当前参数的一个指针,取参必须通过这个指针进行。
程序运行流程包括如下步骤:
<Step 1>在调用参数表之前,定义一个va_list类型的变量,(假设va_list类型变量被定义为ap);
<Step 2>对ap进行初始化,让它指向可变参数表里面的第一个参数,这是通过va_start来实现的,第一个参数是ap本身,第二个参数是在变参表前面紧挨着的一个变量;
<Step 3>获取参数,调用va_arg,它的第一个参数是ap,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把ap的位置指向变参表的下一个变量位置;
<Step 4>获取所有的参数之后,将这个ap指针关掉,以免发生危险,方法是调用va_end,将输入的参数ap置为NULL。
为了便于理解,下面对本申请实施例中的具体流程进行描述,请参阅图1,本申请实施例中一种程序接口传参方法的一个实施例可包括:
S101、将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值;
相关技术中,va_arg宏的可传输的参数类型有限,可以为int、double等类型,但不能指定可传输的参数类型char、short或者float类型,如果传输的参数类型char类型会被自动转换为int类型,如果传输的参数类型float类型会被自动转换为double类型。为了解决上述问题,本申请通过定义一个通用数据结构类,来规避上述传参过程中的数据类型限制,通过通用数据结构类的调用动态调整可变参数的数据类型,从而解决现有可变参数类型识别的编译器版本限制和数据类型限定的问题。
为此,本申请实施例中的程序接口传参系统可以将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值。
示例性的,以实现int、bool、float、char等基本类型的参数以及用户自定义的“otxRequest”、“otxMessage”等类型的参数传输为例,具体的实现宏的定义的代码如下:
S102、调用通用数据结构类创建目标参数对应的目标对象;
实际应用中,可以根据需求传输的参数的数据类型,调用通用数据结构类创建目标参数对应的目标对象,将目标参数的地址赋值给目标对象的万能指针,并将目标参数对应的宏标识符赋值给目标对象的string变量。
进一步的,在本申请实施例中,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。预先设置的通用数据结构类能够随时调用,每次传输参数时即刻调用即即可,无需每次都重新设置,大大提高了参数传输的效率。
可选的,为了动态调整可变参数的数据类型,本申请实施例中,程序接口传参系统可以定义通用数据结构类,该通用数据结构类中包含万能指针和字符串类型string变量。其中,万能指针用于指向参数变量的内存地址,string变量用于标识参数变量的数据类型,如上述步骤中的OTX_INTEGER、OTX_BOOLEAN等宏标识符对应的数据类型。
示例性的,以实现int类型的参数iVar=99、float类型的参数fVar=1.23为例,具体创建目标对象的代码如下:
S103、将目标对象写入可变参数接口函数的可变参数列表;
在创建目标参数对应的目标对象之后,可以将目标对象写入可变参数接口函数的可变参数列表。具体的,可以通过主函数调用可变参数接口函数实现,具体代码如下:
TestV(2,type1,type2);//调用可变参数接口TestV(int count,…)目标对象type1、type2写入可变参数接口函数的可变参数列表。
S104、调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
在将目标对象写入可变参数接口函数的可变参数列表之后,可以调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。具体的,以上述type1,type2对象实现可变参数接口函数为例,具体实现代码如下:
本申请实施例中,程序接口传参系统将待传输的目标参数的数据类型定义成宏,并定义包含万能指针和字符串类型string变量的通用数据结构类,通过调用通用数据结构类创建目标参数对应的目标对象,将目标参数的地址赋值给目标对象的万能指针,并将目标参数对应的宏标识符赋值给目标对象的string变量,调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。相对于相关技术,本申请实施例预先定义万能指针和字符串类型string变量的通用数据结构类,通过宏定义以及通用数据结构类中万能指针调用动态调整可变参数的数据类型,避免了直接读取参数时的数据类型限定的问题,扩展了现有的可变参数接口函数的可传参数的数据类型。
在上述图1所示的实施例的基础上,在确定目标参数对应的目标对象的数据类型之后,还可以根据目标对象中的万能指针读取对应的参数,具体的步骤可以包括:当读取到的目标对象时,将目标对象的万能指针转换成目标对象的宏定义值指示的目标数据类型的指针;并根据目标数据类型的指针读取目标数据。以上述type1,type2对象实现可变参数接口函数为例,具体实现代码如下:
可以理解的是,上述代码实现过程中,当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏,在可变参数接口函数中设置循环读取的次数(例如设置for循环),依次读取不同数据类型的参数。
可选的,本申请实施例中,目标参数的数据类型为C或C++语言自带数据类型,例如,char类型、short类型、double类型、string类型、bool类型、float类型或者自定义的数据类型,具体此处不做限定。
为了便于理解,下面将结合具体的应用实施例对本发明实施例中的程序接口传参方法进行说明,可包括如下步骤:
1、将程序中所需用到的所有数据类型定义成宏;
具体的实现宏的定义的代码如下:
2、定义一个通用数据结构,其中包含一个万能指针类型和string类型变量;
其中,万能指针用来指向实际数据的地址,而string变量用来标识实际的数据类型,具体代码实现如图2所示。
3、创建具体的数据类型对象,然后将对象的地址赋值给GeneralType结构的万能指针,将数据类型对应的宏定义赋值给GeneralType结构的string变量。
具体的,以实现int类型的参数iVar=99、float类型的参数fVar=1.23为例,具体创建目标对象的代码如下:
4、在可变参数接口中,va_arg第二个参数,使用步骤2中定义的万能类型,然后依次取出调用者传入的参数。
具体的,使用GeneralType结构中的类型标识变量与步骤1中的类型宏定义比对,从而判断当前数据的真实类型。
5、将万能指针转换成具体数据类型的指针,继而获取正确数据执行其他操作。
具体的,可变参数接口代码实现如图3所示。
请参阅图4,本申请实施例还提供了一种程序接口传参系统,应用于C或C++语言程序,可包括:
第一定义模块401,将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值;
第一调用模块402,调用通用数据结构类创建目标参数对应的目标对象,将目标参数的地址赋值给目标对象的万能指针,并将目标参数对应的宏标识符赋值给目标对象的string变量;
写入模块403,将目标对象写入可变参数接口函数的可变参数列表;
第二调用模块404,调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
本申请实施例中,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:
设置模块,用于设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。
进一步的,在本申请实施例中通用数据结构类中包含万能指针和字符串类型string变量,第一调用模块,可包括:
处理单元,用于将目标参数的地址赋值给所述目标对象的万能指针,并将目标参数对应的宏标识符赋值给目标对象的string变量。
可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参系统,还可以包括:
转换模块,当读取到的目标对象时,将目标对象的万能指针转换成目标对象的宏定义值指示的目标数据类型的指针;
读取模块,用于根据目标数据类型的指针读取目标数据。
可选的,作为一种可能的实施方式,本申请实施例中的程序接口传参系统,还可以包括:
第一设置模块,当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
第二设置模块,在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
可选的,作为一种可能的实施方式,本申请实施例中目标参数的数据类型为C或C++语言自带数据类型,例如char类型、short类型、double类型、string类型、bool类型、float类型或者自定义的数据类型。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上面从模块化功能实体的角度对本申请实施例中的程序接口传参系统进行了描述,请参阅图5,下面从硬件处理的角度对本申请实施例中的计算机装置进行描述:
该计算机装置1可以包括存储器11、处理器12和输入输出总线13。处理器11执行计算机程序时实现上述图1所示的程序接口传参方法实施例中的步骤,例如图1所示的步骤101至103。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
本申请的一些实施例中,处理器具体用于实现如下步骤:
将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值;
调用通用数据结构类创建目标参数对应的目标对象;
将目标对象写入可变参数接口函数的可变参数列表;
调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
将目标参数的地址赋值给目标对象的万能指针,并将目标参数对应的宏标识符赋值给目标对象的string变量。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
当读取到的目标对象时,将目标对象的万能指针转换成目标对象的宏定义值指示的目标数据类型的指针;
根据目标数据类型的指针读取目标数据。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是计算机装置1的内部存储单元,例如该计算机装置1的硬盘。存储器11在另一些实施例中也可以是计算机装置1的外部存储设备,例如计算机装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括计算机装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于计算机装置1的应用软件及各类数据,例如计算机程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行计算机程序01等。
该输入输出总线13可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。
进一步地,计算机装置还可以包括有线或无线网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该计算机装置1与其他电子设备之间建立通信连接。
可选地,该计算机装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的,用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在计算机装置1中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有组件11-14以及计算机程序01的计算机装置1,本领域技术人员可以理解的是,图5示出的结构并不构成对计算机装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现如下步骤:
将待传输的目标参数的数据类型定义成宏,其中,目标参数的数据类型的标识字符的字面量作为对应宏定义值;
调用通用数据结构类创建目标参数对应的目标对象,将目标参数的地址赋值给目标对象的万能指针,并将目标参数对应的宏标识符赋值给目标对象的string变量;
将目标对象写入可变参数接口函数的可变参数列表;
调用可变参数接口函数读取参数,当读取到目标对象时,根据目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
将目标参数的地址赋值给目标对象的万能指针,并将目标参数对应的宏标识符赋值给目标对象的string变量。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
当读取到的目标对象时,将目标对象的万能指针转换成目标对象的宏定义值指示的目标数据类型的指针;
根据目标数据类型的指针读取目标数据。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种程序接口传参方法,其特征在于,所述方法包括:
将待传输的目标参数的数据类型定义成宏,其中,所述目标参数的数据类型的标识字符的字面量作为对应宏定义值;
调用通用数据结构类创建所述目标参数对应的目标对象;
将所述目标对象写入可变参数接口函数的可变参数列表;
调用可变参数接口函数读取参数,当读取到所述目标对象时,根据所述目标对象的字符串类型string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
2.根据权利要求1所述的方法,其特征在于,所述调用通用数据结构类创建所述目标参数对应的目标对象之前,还包括:
设置通用数据结构类,其中,所述通用数据结构类中包含万能指针和string变量。
3.根据权利要求2所述的方法,其特征在于,所述调用通用数据结构类创建所述目标参数对应的目标对象,还包括:
将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量。
4.根据权利要求3所述的方法,其特征在于,还包括:
当读取到的目标对象时,将所述目标对象的万能指针转换成所述目标对象的宏定义值指示的目标数据类型的指针;
根据所述目标数据类型的指针读取目标数据。
5.根据权利要求3所述的方法,其特征在于,还包括:
当存在多种不同数据类型的参数时,分别设置不同数据类型对应的宏;
在可变参数接口函数中设置循环读取的次数,依次读取不同数据类型的参数。
6.根据权利要求1至5中任一项所述的方法,其特征在于,目标参数的数据类型为C或C++语言自带数据类型或者自定义的数据类型。
7.一种程序接口传参系统,其特征在于,包括:
第一定义模块,将待传输的目标参数的数据类型定义成宏,其中,所述目标参数的数据类型的标识字符的字面量作为对应宏定义值;
第一调用模块,调用通用数据结构类创建所述目标参数对应的目标对象,将所述目标参数的地址赋值给所述目标对象的万能指针,并将所述目标参数对应的宏标识符赋值给所述目标对象的string变量;
写入模块,将所述目标对象写入可变参数接口函数的可变参数列表;
第二调用模块,调用可变参数接口函数读取参数,当读取到所述目标对象时,根据所述目标对象的string变量中的宏标识符对应的宏定义值作为读取到的参数的数据类型。
8.根据权利要求7所述的系统,其特征在于,还包括:
转换模块,当读取到的目标对象时,将所述目标对象的万能指针转换成所述目标对象的宏定义值指示的目标数据类型的指针;
读取模块,用于根据所述目标数据类型的指针读取目标数据。
9.一种计算机装置,其特征在于,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至6中任意一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至6中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011163047.1A CN112306473B (zh) | 2020-10-27 | 2020-10-27 | 一种程序接口传参方法、系统及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011163047.1A CN112306473B (zh) | 2020-10-27 | 2020-10-27 | 一种程序接口传参方法、系统及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306473A true CN112306473A (zh) | 2021-02-02 |
CN112306473B CN112306473B (zh) | 2023-10-20 |
Family
ID=74330378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011163047.1A Active CN112306473B (zh) | 2020-10-27 | 2020-10-27 | 一种程序接口传参方法、系统及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306473B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112882695A (zh) * | 2021-03-02 | 2021-06-01 | 百果园技术(新加坡)有限公司 | 传参方法、装置、计算机设备及存储介质 |
CN113835688A (zh) * | 2021-08-27 | 2021-12-24 | 河南理工大学 | 一种科学计算语言解释器的对象封装方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512332A (zh) * | 2002-12-31 | 2004-07-14 | ����̩ƽ | 自描述数据对象的处理方法 |
US20080184197A1 (en) * | 2003-03-31 | 2008-07-31 | Applied Micro Circuits Corporation | Macro to instantiate a variable used with a first macro requiring use of a second macro suitable for said variable |
CN101408762A (zh) * | 2007-09-28 | 2009-04-15 | 洛克威尔自动控制技术股份有限公司 | 利用嵌入式宏功能编程的可编程控制器 |
CN103970547A (zh) * | 2014-05-28 | 2014-08-06 | 北京经纬恒润科技有限公司 | 变量生成方法和装置及数据处理方法和装置 |
CN110275789A (zh) * | 2019-06-24 | 2019-09-24 | 恒生电子股份有限公司 | 数据处理方法及装置 |
-
2020
- 2020-10-27 CN CN202011163047.1A patent/CN112306473B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512332A (zh) * | 2002-12-31 | 2004-07-14 | ����̩ƽ | 自描述数据对象的处理方法 |
US20080184197A1 (en) * | 2003-03-31 | 2008-07-31 | Applied Micro Circuits Corporation | Macro to instantiate a variable used with a first macro requiring use of a second macro suitable for said variable |
CN101408762A (zh) * | 2007-09-28 | 2009-04-15 | 洛克威尔自动控制技术股份有限公司 | 利用嵌入式宏功能编程的可编程控制器 |
CN103970547A (zh) * | 2014-05-28 | 2014-08-06 | 北京经纬恒润科技有限公司 | 变量生成方法和装置及数据处理方法和装置 |
CN110275789A (zh) * | 2019-06-24 | 2019-09-24 | 恒生电子股份有限公司 | 数据处理方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112882695A (zh) * | 2021-03-02 | 2021-06-01 | 百果园技术(新加坡)有限公司 | 传参方法、装置、计算机设备及存储介质 |
CN112882695B (zh) * | 2021-03-02 | 2023-11-28 | 百果园技术(新加坡)有限公司 | 传参方法、装置、计算机设备及存储介质 |
CN113835688A (zh) * | 2021-08-27 | 2021-12-24 | 河南理工大学 | 一种科学计算语言解释器的对象封装方法 |
CN113835688B (zh) * | 2021-08-27 | 2024-04-12 | 河南理工大学 | 一种科学计算语言解释器的对象封装方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112306473B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108388598B (zh) | 电子装置、数据存储方法及存储介质 | |
CN108388599B (zh) | 电子装置、数据迁移及调用方法及存储介质 | |
CN112118286B (zh) | 基于mdc多线程链路追踪方法、装置及计算机可读存储介质 | |
CN108255513B (zh) | 电子装置、基于springmvc的数据接口及其说明自动生成方法及存储介质 | |
CN109799988B (zh) | iOS页面布局方法、终端设备及计算机可读存储介质 | |
CN112306473A (zh) | 一种程序接口传参方法、系统及相关设备 | |
CN110941614A (zh) | 表单生成方法、装置、电子设备及计算机可读存储介质 | |
US20170235473A1 (en) | Method and Apparatus for Loading Application Program View, and Electronic Terminal | |
CN110244983B (zh) | 固定串口号的方法、终端设备及存储介质 | |
CN107679056B (zh) | 生成sql语句的方法、电子装置及可读存储介质 | |
CN110928802A (zh) | 基于自动生成用例的测试方法、装置、设备及存储介质 | |
CN108228551B (zh) | excel的数据导入方法、装置、设备及计算机可读存储介质 | |
CN111045676B (zh) | 物联网设备的控制界面的生成方法、装置、存储介质及电子设备 | |
CN106796521B (zh) | 独立于产品发布的api版本控制 | |
CN105488125A (zh) | 页面访问方法和装置 | |
CN107704253B (zh) | 控件的文字颜色变换方法、系统及电子装置 | |
CN110837366A (zh) | 一种表单生成方法、电子装置及计算机可读存储介质 | |
CN112306472A (zh) | 一种程序接口传参方法、系统及相关设备 | |
CN110647564A (zh) | Hive建表方法、电子装置及计算机可读存储介质 | |
CN111158777B (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN110399166B (zh) | ME Nonce值的保存方法、装置、设备及存储介质 | |
CN105917307A (zh) | 用户界面框架 | |
CN110333859B (zh) | 页面创建方法、装置、电子设备和计算机可读存储介质 | |
CN114691573A (zh) | 一种硬件识别电路、方法及相关设备 | |
CN107291637A (zh) | 在安卓系统中兼容多型号移动通信模块的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |