全局变量管理方法及装置的制作方法

文档序号:6426923阅读:106来源:国知局
专利名称:全局变量管理方法及装置的制作方法
技术领域
本发明涉及计算机领域,尤其涉及一种全局变量管理方法及装置。
背景技术
目前终端开发平台比较多,每个平台对开发语言全局变量的支持方式有所不同,通常MTK(联发科公司开发的一种手机平台,广泛用于国产手机的非智能手机系统)平台支持全局变量,而在MTK上运行的多个中间件平台,有一部分支持全局变量的使用方式,另一部分则不支持全局变量的使用方式。若不支持全局变量使用方式,所有需要用到的全局变量,全部要在程序启动时初始化到平台系统环境中,当需要使用的时候,再通过统一的公共函数接口进行获取。 在实现上述全局变量使用的过程中,发明人发现现有技术中至少存在如下问题由于部分开发平台支持全局变量的使用方式,部分开发平台则不支持全局变量的使用方式,造成开发的软件在不同平台的实现方式差别较大,使平台代码的可移植性较差。

发明内容
有鉴于此,本发明的实施例提供一种全局变量管理方法及装置,能够使不同平台采取统一的全量变量使用方式,提高平台代码的可移植性。为达到上述目的,本发明的实施例采用如下技术方案一方面,本发明的实施例提供一种全局变量管理方法,包括查询开发平台是否支持全局变量使用方式;若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台全局变量的声明、定义及调用;若所述开发平台不支持全局变量使用方式,则为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。另一方面,本发明的实施例提供一种全局变量管理装置,包括查询单元,用于查询开发平台是否支持全局变量使用方式;第一定义单元,用于在所述查询单元查询到所述开发平台支持全局变量使用方式时,通过宏定义实现所述开发平台全局变量的声明、定义及调用;第二定义单元,用于在所述查询单元查询到所述开发平台不支持全局变量使用方式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。相对于现有技术,本发明实施例提供的技术方案能够在开发平台不支持全局变量使用方式的情形下,通过为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用;使不支持全局变量使用方式的开发平台和支持全局变量使用方式的开发平台在对全局变量进行声明、定义及调用时使用相同的定义形式,从而使不同平台能够采取统一的全量变量使用方式,提高了平台代码的可移植性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例提供的全局变量管理方法的流程示意图;图2为本发明实施例提供的全局变量管理装置的结构框架
图3为本发明实施例提供的另一全局变量管理装置的结构框架图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例I本发明实施例提供一种全局变量管理方法,如图I所示,该方法包括步骤101、102、及 103。101、查询开发平台是否支持全局变量使用方式;若所述开发平台支持全局变量使用方式,则执行步骤102 ;若所述开发平台不支持全局变量使用方式,则执行步骤103。102、通过宏定义实现所述开发平台全局变量的声明、定义及调用。其中,所述通过宏定义实现所述开发平台全局变量的声明、定义及调用可以通过以下的方式实现,包括所述通过宏定义实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量。以C语言的宏定义为例,所述通过宏定义实现所述开发平台全局变量的声明,具体可以为#define DECLARE_GLOBE_VARIABLE(type, name)extern type name其中,需要说明的是,带有参数的宏定义的固定格式为#define宏名(参数表)字符串,例如#define S(a,b)a*b ;在程序中的应用为area = S(3, 2);则其宏定义的执行为第一步 area = S (3, 2)被换为 area = a*b ;第二步 area = S (3, 2)被换为 area = 3*2。本发明实施例中,DECLARE_GLOBE_VARIABLE为宏名;参数表包括type和name,type为全局变量的类型,name为全局变量的变量名;字符串为extern type name,表示声明一种类型的全局变量。所述通过宏定义实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及对所述全局变量的赋值。以C语言的宏定义为例,所述通过宏定义实现所述开发平台全局变量的定义,具体可以为#define DEFINE_GLOBE_VARIABLE(type,name, val) type name = val。其中,DEFINE_GLOBE_VARIABLE 为宏名;参数表包括 type、name和val, val为全局变量的初始值;type name = val为字符串,表示为一种类型的全局
变量赋初值。所述通过宏定义实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入所述全局变量名。以C语言的宏定义为例,所述通过宏定义实现所述开发平台全局变量的调用,具体可以为#define GLOBE (name) name ;其中,GLOBE为宏名;参数表包括name ;字符串为name。103、为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。其中,为所述开发平台定义存储全局变量的结构体,该结构体可以表示为如下形式,但本发明实施例对此不进行限制,任何结构体的定义形式都可以应用于本发明实施例中。typedef struct_GlobeVariable{int var ;int var2}GlobeVariable ;其中,所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,可以通过以下的方式实现,包括所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入以返回函数形式的全局变量的声明。例如,以C语言的宏定义为例,所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明,具体可以为#define DECLARE_GLOBE_VARIABLE(type, name)extern type* FUN_GL0BE_VARIABLE_##name(QQVOID);其中,DECLARE_GLOBE_VARIABLE为宏名;参数表包括 type 和 name ;字符串为 extern type*FUN_GLOBE_VARIABLE_##name (QQVOID), FUN_GL0BE_VARIABLE_##name (QQVOID)为从所述结构体获取全局变量的函数。所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值。以C语言的宏定义为例,所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义,具体可以为#def ine DEFINE_GLOBE_VARIABLE (type, name, val) type*FUN_GLOBE_VARIABLE_##name(QQVOID);其中,DEFINE_GLOBE_VARIABLE为宏名;参数表包括 type、name 和 val,val 为全局变量的初始值;type*FUN_GLOBE_VARIABLE_##name (QQVOID)为字符串,表示为一种类型的
全局变量赋初值。
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。以C语言的宏定义为例,所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用,具体可以为#define GLOBE(name)(*FUN_GLOBE_VARIABLE_##name());其中,GLOBE为宏名;参数表包括name ;字符串为(*FUN_GL0BE_VARIABLE_##nameO)。进一步,所述FUN_GLOBE_VARIABLE_##name O可以定义为如下形式,包括type*FUN_GLOBE_VARIABLE_##nameO {return&(QGetGlobeVar iableO - > name);·}。进一步的,当不支持全局变量使用方式的开发平台运行支持全局变量使用方式开发平台的应用程序时,获取所述支持全局变量使用方式开发平台的应用程序的全局变量信息,将所述全局变量信息保存在所述结构体中,以使得所述不支持全局变量使用方式的开发平台成功运行所述应用程序。其中,获取支持全局变量使用方式开发平台的应用程序的全局变量信息,可以通过程序员人工获取,也可以通过扫描应用程序的代码获取,在具体实施时,本发明实施例对此不进行限制。本发明实施例中,在开发平台不支持全局变量使用方式的情形下,通过为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用;使不支持全局变量使用方式的开发平台和支持全局变量使用方式的开发平台,在对全局变量进行声明、定义及调用时使用相同的定义形式,从而使不同平台能够采取统一的全量变量使用方式,提高了平台代码的可移植性,降低了多个开发平台代码开发及移植的代价。实施例2本发明实施例提供一种全局变量管理装置,如图2所示,该装置包括查询单元21、第一定义单元22、第二定义单元23。查询单元21,用于查询开发平台是否支持全局变量使用方式。第一定义单元22,用于在所述查询单元21查询到所述开发平台支持全局变量使用方式时,通过宏定义实现所述开发平台全局变量的声明、定义及调用。其中,所述第一定义单元22通过宏定义实现所述开发平台全局变量的声明、定义及调用具体可以通过以下的方式实现,包括所述通过宏定义实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量;其中,所述第一定义单元22通过宏定义实现所述开发平台全局变量的声明的具体举例,可以参考实施例I中的步骤102中的相应描述,本发明实施例此处将不再赘述。所述通过宏定义实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及对所述全局变量的赋值;其中,所述第一定义单元22通过宏定义实现所述开发平台全局变量的定义的具体举例,可以参考实施例I中的步骤102中的相应描述,本发明实施例此处将不再赘述。所述通过宏定义实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入所述全局变量名。其中,所述第一定义单元22通过宏定义实现所述开发平台全局变量的调用的具体举例,可以参考实施例I中的步骤102中的相应描述,本发明实施例此处将不再赘述。第二定义单元23,用于在所述查询单元21查询到所述开发平台不支持全局变量使用方式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。其中,所述第二定义单元23通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用具体可以通过以下的方式实现,包括
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入以返回函数形式的全局变量的声明;其中,所述第二定义单元23通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明的具体举例,可以参考实施例I中的步骤103中的相应描述,本发明实施例此处将不再赘述。所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值;其中,所述第二定义单元23通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义的具体举例,可以参考实施例I中的步骤103中的相应描述,本发明实施例此处将不再赘述。所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。其中,所述第二定义单元23通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用的具体举例,可以参考实施例I中的步骤103中的相应描述,本发明实施例此处将不再赘述。进一步的,如图3所示,该装置还可包括获取单元24、存储单元25。获取单元24,用于当不支持全局变量使用方式的开发平台运行支持全局变量使用方式开发平台的应用程序时,获取所述支持全局变量使用方式开发平台的应用程序的全局变量信息。其中,所述获取单元24获取支持全局变量使用方式开发平台的应用程序的全局变量信息,可以通过程序员人工获取,也可以通过扫描应用程序的代码获取,在具体实施时,本发明实施例对此不进行限制。存储单元25,用于将所述获取单元24获取的所述全局变量信息保存在所述结构体中,以使得所述不支持全局变量使用方式的开发平台成功运行所述应用程序。本发明实施例中,在开发平台不支持全局变量使用方式的情形下,通过为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用;使不支持全局变量使用方式的开发平台和支持全局变量使用方式的开发平台,在对全局变量进行声明、定义及调用时使用相同的定义形式,从而使不同平台能够采取统一的全量变量使用方式,提高了平台代码的可移植性,降低了多个开发平台代码开发及移植的代价。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.一种全局变量管理方法,其特征在于,包括 查询开发平台是否支持全局变量使用方式; 若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台全局变量的声明、定义及调用; 若所述开发平台不支持全局变量使用方式,则为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。
2.根据权利要求I所述的方法,其特征在于,所述通过宏定义的方式实现所述开发平台全局变量的声明、定义及调用包括 所述通过宏定义实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量; 所述通过宏定义实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及对所述全局变量的赋值; 所述通过宏定义实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入所述全局变量名。
3.根据权利要求I或2所述的方法,其特征在于,所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用包括 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入以返回函数形式的全局变量的声明; 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值; 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。
4.根据权利要求I所述的方法,其特征在于,当不支持全局变量使用方式的开发平台运行支持全局变量使用方式开发平台的应用程序时,获取所述支持全局变量使用方式开发平台的应用程序的全局变量信息,将所述全局变量信息保存在所述结构体中,以使得所述不支持全局变量使用方式的开发平台成功运行所述应用程序。
5.一种全局变量管理装置,其特征在于,包括 查询单元,用于查询开发平台是否支持全局变量使用方式; 第一定义单元,用于在所述查询单元查询到所述开发平台支持全局变量使用方式时,通过宏定义实现所述开发平台全局变量的声明、定义及调用; 第二定义单元,用于在所述查询单元查询到所述开发平台不支持全局变量使用方式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。
6.根据权利要求5所述的装置,其特征在于,所述第一定义单元用于,所述通过宏定义实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量; 所述通过宏定义实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及对所述全局变量的赋值; 所述通过宏定义实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入所述全局变量名。
7.根据权利要求5或6所述的装置,其特征在于,所述第二定义单元用于, 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明为在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入以返回函数形式的全局变量的声明; 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值; 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用为在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。
8.根据权利要求5所述的装置,其特征在于,还包括 获取单元,用于当不支持全局变量使用方式的开发平台运行支持全局变量使用方式开发平台的应用程序时,获取所述支持全局变量使用方式开发平台的应用程序的全局变量信息; 存储单元,用于将所述获取单元获取的所述全局变量信息保存在所述结构体中,以使得所述不支持全局变量使用方式的开发平台成功运行所述应用程序。
全文摘要
本发明的实施例公开了一种全局变量管理方法及装置,涉及计算机领域,能够使不同平台采取统一的全局变量使用方式,提高平台代码的可移植性。本发明的方法包括查询开发平台是否支持全局变量使用方式;若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台全局变量的声明、定义及调用;若所述开发平台不支持全局变量使用方式,则为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。本发明的实施例主要用于全局变量的使用过程中。
文档编号G06F9/44GK102841782SQ201110171640
公开日2012年12月26日 申请日期2011年6月23日 优先权日2011年6月23日
发明者开平 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1