全局变量管理方法及装置.pdf

上传人:00062****4422 文档编号:4263167 上传时间:2018-09-12 格式:PDF 页数:11 大小:386.95KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110171640.5

申请日:

2011.06.23

公开号:

CN102841782A

公开日:

2012.12.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/44申请日:20110623|||公开

IPC分类号:

G06F9/44

主分类号:

G06F9/44

申请人:

腾讯科技(深圳)有限公司

发明人:

开平

地址:

518000 广东省深圳市福田区赛格科技园2栋东403室

优先权:

专利代理机构:

北京中博世达专利商标代理有限公司 11274

代理人:

申健

PDF下载: PDF下载
内容摘要

本发明的实施例公开了一种全局变量管理方法及装置,涉及计算机领域,能够使不同平台采取统一的全局变量使用方式,提高平台代码的可移植性。本发明的方法包括:查询开发平台是否支持全局变量使用方式;若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台全局变量的声明、定义及调用;若所述开发平台不支持全局变量使用方式,则为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。本发明的实施例主要用于全局变量的使用过程中。

权利要求书

1.一种全局变量管理方法,其特征在于,包括:
查询开发平台是否支持全局变量使用方式;
若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台
全局变量的声明、定义及调用;
若所述开发平台不支持全局变量使用方式,则为所述开发平台定义存储全
局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量
的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。
2.根据权利要求1所述的方法,其特征在于,所述通过宏定义的方式实现
所述开发平台全局变量的声明、定义及调用包括:
所述通过宏定义实现所述开发平台全局变量的声明为:在宏定义的参数列
表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局
变量;
所述通过宏定义实现所述开发平台全局变量的定义为:在宏定义的参数列
表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏
定义的字符串中写入全局变量的类型以及对所述全局变量的赋值;
所述通过宏定义实现所述开发平台全局变量的调用为:在宏定义的参数列
表中写入全局变量名,在宏定义的字符串中写入所述全局变量名。
3.根据权利要求1或2所述的方法,其特征在于,所述通过宏定义并以返
回函数的形式实现所述开发平台全局变量的声明、定义及调用包括:
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明
为:在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的
字符串中写入以返回函数形式的全局变量的声明;
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义
为:在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局
变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式
的全局变量的赋值;
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用
为:在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函
数形式的全局变量。
4.根据权利要求1所述的方法,其特征在于,当不支持全局变量使用方式
的开发平台运行支持全局变量使用方式开发平台的应用程序时,获取所述支持
全局变量使用方式开发平台的应用程序的全局变量信息,将所述全局变量信息
保存在所述结构体中,以使得所述不支持全局变量使用方式的开发平台成功运
行所述应用程序。
5.一种全局变量管理装置,其特征在于,包括:
查询单元,用于查询开发平台是否支持全局变量使用方式;
第一定义单元,用于在所述查询单元查询到所述开发平台支持全局变量使
用方式时,通过宏定义实现所述开发平台全局变量的声明、定义及调用;
第二定义单元,用于在所述查询单元查询到所述开发平台不支持全局变量
使用方式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返
回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数
为从所述结构体获取全局变量的函数。
6.根据权利要求5所述的装置,其特征在于,所述第一定义单元用于,
所述通过宏定义实现所述开发平台全局变量的声明为:在宏定义的参数列
表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局
变量;
所述通过宏定义实现所述开发平台全局变量的定义为:在宏定义的参数列
表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏
定义的字符串中写入全局变量的类型以及对所述全局变量的赋值;
所述通过宏定义实现所述开发平台全局变量的调用为:在宏定义的参数列
表中写入全局变量名,在宏定义的字符串中写入所述全局变量名。
7.根据权利要求5或6所述的装置,其特征在于,所述第二定义单元用于,
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明
为:在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的
字符串中写入以返回函数形式的全局变量的声明;
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义
为:在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局
变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式
的全局变量的赋值;
所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用
为:在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函
数形式的全局变量。
8.根据权利要求5所述的装置,其特征在于,还包括:
获取单元,用于当不支持全局变量使用方式的开发平台运行支持全局变量
使用方式开发平台的应用程序时,获取所述支持全局变量使用方式开发平台的
应用程序的全局变量信息;
存储单元,用于将所述获取单元获取的所述全局变量信息保存在所述结构
体中,以使得所述不支持全局变量使用方式的开发平台成功运行所述应用程序。

说明书

全局变量管理方法及装置

技术领域

本发明涉及计算机领域,尤其涉及一种全局变量管理方法及装置。

背景技术

目前终端开发平台比较多,每个平台对开发语言全局变量的支持方式有所
不同,通常MTK(联发科公司开发的一种手机平台,广泛用于国产手机的非智能
手机系统)平台支持全局变量,而在MTK上运行的多个中间件平台,有一部分支
持全局变量的使用方式,另一部分则不支持全局变量的使用方式。若不支持全
局变量使用方式,所有需要用到的全局变量,全部要在程序启动时初始化到平
台系统环境中,当需要使用的时候,再通过统一的公共函数接口进行获取。

在实现上述全局变量使用的过程中,发明人发现现有技术中至少存在如下
问题:由于部分开发平台支持全局变量的使用方式,部分开发平台则不支持全
局变量的使用方式,造成开发的软件在不同平台的实现方式差别较大,使平台
代码的可移植性较差。

发明内容

有鉴于此,本发明的实施例提供一种全局变量管理方法及装置,能够使不
同平台采取统一的全量变量使用方式,提高平台代码的可移植性。

为达到上述目的,本发明的实施例采用如下技术方案:

一方面,本发明的实施例提供一种全局变量管理方法,包括:

查询开发平台是否支持全局变量使用方式;

若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台
全局变量的声明、定义及调用;

若所述开发平台不支持全局变量使用方式,则为所述开发平台定义存储全
局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量
的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的函数。

另一方面,本发明的实施例提供一种全局变量管理装置,包括:

查询单元,用于查询开发平台是否支持全局变量使用方式;

第一定义单元,用于在所述查询单元查询到所述开发平台支持全局变量使
用方式时,通过宏定义实现所述开发平台全局变量的声明、定义及调用;

第二定义单元,用于在所述查询单元查询到所述开发平台不支持全局变量
使用方式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返
回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回函数
为从所述结构体获取全局变量的函数。

相对于现有技术,本发明实施例提供的技术方案能够在开发平台不支持全
局变量使用方式的情形下,通过为所述开发平台定义存储全局变量的结构体,
通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调
用;使不支持全局变量使用方式的开发平台和支持全局变量使用方式的开发平
台在对全局变量进行声明、定义及调用时使用相同的定义形式,从而使不同平
台能够采取统一的全量变量使用方式,提高了平台代码的可移植性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施
例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述
中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付
出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的全局变量管理方法的流程示意图;

图2为本发明实施例提供的全局变量管理装置的结构框架图;

图3为本发明实施例提供的另一全局变量管理装置的结构框架图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清
楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是
全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造
性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本发明实施例提供一种全局变量管理方法,如图1所示,该方法包括步骤
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_GLOBE_VARIABLE_##name(QQVOID);

其中,DECLARE_GLOBE_VARIABLE为宏名;参数表包括type和name;字符
串为extern type*FUN_GLOBE_VARIABLE_##name(QQVOID),
FUN_GLOBE_VARIABLE_##name(QQVOID)为从所述结构体获取全局变量的函数。

所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义
为:在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局
变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式
的全局变量的赋值。以C语言的宏定义为例,所述通过宏定义并以返回函数的
形式实现所述开发平台全局变量的定义,具体可以为:

#define 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_GLOBE_VARIABLE_##name())。

进一步,所述FUN_GLOBE_VARIABLE_##name()可以定义为如下形式,包括:

type*FUN_GLOBE_VARIABLE_##name(){

    return&(QGetGlobeVar iable()->name);

}。

进一步的,当不支持全局变量使用方式的开发平台运行支持全局变量使用
方式开发平台的应用程序时,获取所述支持全局变量使用方式开发平台的应用
程序的全局变量信息,将所述全局变量信息保存在所述结构体中,以使得所述
不支持全局变量使用方式的开发平台成功运行所述应用程序。

其中,获取支持全局变量使用方式开发平台的应用程序的全局变量信息,
可以通过程序员人工获取,也可以通过扫描应用程序的代码获取,在具体实施
时,本发明实施例对此不进行限制。

本发明实施例中,在开发平台不支持全局变量使用方式的情形下,通过为
所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实
现所述开发平台全局变量的声明、定义及调用;使不支持全局变量使用方式的
开发平台和支持全局变量使用方式的开发平台,在对全局变量进行声明、定义
及调用时使用相同的定义形式,从而使不同平台能够采取统一的全量变量使用
方式,提高了平台代码的可移植性,降低了多个开发平台代码开发及移植的代
价。

实施例2

本发明实施例提供一种全局变量管理装置,如图2所示,该装置包括:查
询单元21、第一定义单元22、第二定义单元23。

查询单元21,用于查询开发平台是否支持全局变量使用方式。

第一定义单元22,用于在所述查询单元21查询到所述开发平台支持全局变
量使用方式时,通过宏定义实现所述开发平台全局变量的声明、定义及调用。

其中,所述第一定义单元22通过宏定义实现所述开发平台全局变量的声明、
定义及调用具体可以通过以下的方式实现,包括:

所述通过宏定义实现所述开发平台全局变量的声明为:在宏定义的参数列
表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局
变量;其中,所述第一定义单元22通过宏定义实现所述开发平台全局变量的声
明的具体举例,可以参考实施例1中的步骤102中的相应描述,本发明实施例
此处将不再赘述。

所述通过宏定义实现所述开发平台全局变量的定义为:在宏定义的参数列
表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏
定义的字符串中写入全局变量的类型以及对所述全局变量的赋值;其中,所述
第一定义单元22通过宏定义实现所述开发平台全局变量的定义的具体举例,可
以参考实施例1中的步骤102中的相应描述,本发明实施例此处将不再赘述。

所述通过宏定义实现所述开发平台全局变量的调用为:在宏定义的参数列
表中写入全局变量名,在宏定义的字符串中写入所述全局变量名。其中,所述
第一定义单元22通过宏定义实现所述开发平台全局变量的调用的具体举例,可
以参考实施例1中的步骤102中的相应描述,本发明实施例此处将不再赘述。

第二定义单元23,用于在所述查询单元21查询到所述开发平台不支持全局
变量使用方式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并
以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所述返回
函数为从所述结构体获取全局变量的函数。

其中,所述第二定义单元23通过宏定义并以返回函数的形式实现所述开发
平台全局变量的声明、定义及调用具体可以通过以下的方式实现,包括:

所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明
为:在宏定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的
字符串中写入以返回函数形式的全局变量的声明;其中,所述第二定义单元23
通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明的具体举
例,可以参考实施例1中的步骤103中的相应描述,本发明实施例此处将不再
赘述。

所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义
为:在宏定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局
变量的初始值,并在宏定义的字符串中写入全局变量的类型以及返回函数形式
的全局变量的赋值;其中,所述第二定义单元23通过宏定义并以返回函数的形
式实现所述开发平台全局变量的定义的具体举例,可以参考实施例1中的步骤
103中的相应描述,本发明实施例此处将不再赘述。

所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用
为:在宏定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函
数形式的全局变量。其中,所述第二定义单元23通过宏定义并以返回函数的形
式实现所述开发平台全局变量的调用的具体举例,可以参考实施例1中的步骤
103中的相应描述,本发明实施例此处将不再赘述。

进一步的,如图3所示,该装置还可包括:获取单元24、存储单元25。

获取单元24,用于当不支持全局变量使用方式的开发平台运行支持全局变
量使用方式开发平台的应用程序时,获取所述支持全局变量使用方式开发平台
的应用程序的全局变量信息。其中,所述获取单元24获取支持全局变量使用方
式开发平台的应用程序的全局变量信息,可以通过程序员人工获取,也可以通
过扫描应用程序的代码获取,在具体实施时,本发明实施例对此不进行限制。

存储单元25,用于将所述获取单元24获取的所述全局变量信息保存在所述
结构体中,以使得所述不支持全局变量使用方式的开发平台成功运行所述应用
程序。

本发明实施例中,在开发平台不支持全局变量使用方式的情形下,通过为
所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实
现所述开发平台全局变量的声明、定义及调用;使不支持全局变量使用方式的
开发平台和支持全局变量使用方式的开发平台,在对全局变量进行声明、定义
及调用时使用相同的定义形式,从而使不同平台能够采取统一的全量变量使用
方式,提高了平台代码的可移植性,降低了多个开发平台代码开发及移植的代
价。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发
明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多
情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或
者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软
件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若
干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备
等)执行本发明各个实施例所述的方法。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于
此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到
变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应
以所述权利要求的保护范围为准。

全局变量管理方法及装置.pdf_第1页
第1页 / 共11页
全局变量管理方法及装置.pdf_第2页
第2页 / 共11页
全局变量管理方法及装置.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《全局变量管理方法及装置.pdf》由会员分享,可在线阅读,更多相关《全局变量管理方法及装置.pdf(11页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102841782 A (43)申请公布日 2012.12.26 C N 1 0 2 8 4 1 7 8 2 A *CN102841782A* (21)申请号 201110171640.5 (22)申请日 2011.06.23 G06F 9/44(2006.01) (71)申请人腾讯科技(深圳)有限公司 地址 518000 广东省深圳市福田区赛格科技 园2栋东403室 (72)发明人开平 (74)专利代理机构北京中博世达专利商标代理 有限公司 11274 代理人申健 (54) 发明名称 全局变量管理方法及装置 (57) 摘要 本发明的实施例公开了一种全局变量管理方 法。

2、及装置,涉及计算机领域,能够使不同平台采取 统一的全局变量使用方式,提高平台代码的可移 植性。本发明的方法包括:查询开发平台是否支 持全局变量使用方式;若所述开发平台支持全局 变量使用方式,则通过宏定义实现所述开发平台 全局变量的声明、定义及调用;若所述开发平台 不支持全局变量使用方式,则为所述开发平台定 义存储全局变量的结构体,通过宏定义并以返回 函数的形式实现所述开发平台全局变量的声明、 定义及调用,所述返回函数为从所述结构体获取 全局变量的函数。本发明的实施例主要用于全局 变量的使用过程中。 (51)Int.Cl. 权利要求书2页 说明书6页 附图2页 (19)中华人民共和国国家知识产权。

3、局 (12)发明专利申请 权利要求书 2 页 说明书 6 页 附图 2 页 1/2页 2 1.一种全局变量管理方法,其特征在于,包括: 查询开发平台是否支持全局变量使用方式; 若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台全局变量的 声明、定义及调用; 若所述开发平台不支持全局变量使用方式,则为所述开发平台定义存储全局变量的结 构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调用,所 述返回函数为从所述结构体获取全局变量的函数。 2.根据权利要求1所述的方法,其特征在于,所述通过宏定义的方式实现所述开发平 台全局变量的声明、定义及调用包括: 所述通过宏。

4、定义实现所述开发平台全局变量的声明为:在宏定义的参数列表中写入全 局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量; 所述通过宏定义实现所述开发平台全局变量的定义为:在宏定义的参数列表中写入全 局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局 变量的类型以及对所述全局变量的赋值; 所述通过宏定义实现所述开发平台全局变量的调用为:在宏定义的参数列表中写入全 局变量名,在宏定义的字符串中写入所述全局变量名。 3.根据权利要求1或2所述的方法,其特征在于,所述通过宏定义并以返回函数的形式 实现所述开发平台全局变量的声明、定义及调用包括: 所述通过宏定义并。

5、以返回函数的形式实现所述开发平台全局变量的声明为:在宏定义 的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入以返回函数 形式的全局变量的声明; 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为:在宏定义 的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义 的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值; 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用为:在宏定义 的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。 4.根据权利要求1所述的方法,其特征在于,当不支持全局变量使用。

6、方式的开发平台 运行支持全局变量使用方式开发平台的应用程序时,获取所述支持全局变量使用方式开发 平台的应用程序的全局变量信息,将所述全局变量信息保存在所述结构体中,以使得所述 不支持全局变量使用方式的开发平台成功运行所述应用程序。 5.一种全局变量管理装置,其特征在于,包括: 查询单元,用于查询开发平台是否支持全局变量使用方式; 第一定义单元,用于在所述查询单元查询到所述开发平台支持全局变量使用方式时, 通过宏定义实现所述开发平台全局变量的声明、定义及调用; 第二定义单元,用于在所述查询单元查询到所述开发平台不支持全局变量使用方式 时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回。

7、函数的形式实现所 述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量的 函数。 6.根据权利要求5所述的装置,其特征在于,所述第一定义单元用于, 权 利 要 求 书CN 102841782 A 2/2页 3 所述通过宏定义实现所述开发平台全局变量的声明为:在宏定义的参数列表中写入全 局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量; 所述通过宏定义实现所述开发平台全局变量的定义为:在宏定义的参数列表中写入全 局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入全局 变量的类型以及对所述全局变量的赋值; 所述通过宏定义实现所述开发平。

8、台全局变量的调用为:在宏定义的参数列表中写入全 局变量名,在宏定义的字符串中写入所述全局变量名。 7.根据权利要求5或6所述的装置,其特征在于,所述第二定义单元用于, 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明为:在宏定义 的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入以返回函数 形式的全局变量的声明; 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为:在宏定义 的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义 的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值; 所述通过宏定义并以返回函数的形。

9、式实现所述开发平台全局变量的调用为:在宏定义 的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。 8.根据权利要求5所述的装置,其特征在于,还包括: 获取单元,用于当不支持全局变量使用方式的开发平台运行支持全局变量使用方式开 发平台的应用程序时,获取所述支持全局变量使用方式开发平台的应用程序的全局变量信 息; 存储单元,用于将所述获取单元获取的所述全局变量信息保存在所述结构体中,以使 得所述不支持全局变量使用方式的开发平台成功运行所述应用程序。 权 利 要 求 书CN 102841782 A 1/6页 4 全局变量管理方法及装置 技术领域 0001 本发明涉及计算机领域。

10、,尤其涉及一种全局变量管理方法及装置。 背景技术 0002 目前终端开发平台比较多,每个平台对开发语言全局变量的支持方式有所不同, 通常MTK(联发科公司开发的一种手机平台,广泛用于国产手机的非智能手机系统)平台支 持全局变量,而在MTK上运行的多个中间件平台,有一部分支持全局变量的使用方式,另一 部分则不支持全局变量的使用方式。若不支持全局变量使用方式,所有需要用到的全局变 量,全部要在程序启动时初始化到平台系统环境中,当需要使用的时候,再通过统一的公共 函数接口进行获取。 0003 在实现上述全局变量使用的过程中,发明人发现现有技术中至少存在如下问题: 由于部分开发平台支持全局变量的使用方。

11、式,部分开发平台则不支持全局变量的使用方 式,造成开发的软件在不同平台的实现方式差别较大,使平台代码的可移植性较差。 发明内容 0004 有鉴于此,本发明的实施例提供一种全局变量管理方法及装置,能够使不同平台 采取统一的全量变量使用方式,提高平台代码的可移植性。 0005 为达到上述目的,本发明的实施例采用如下技术方案: 0006 一方面,本发明的实施例提供一种全局变量管理方法,包括: 0007 查询开发平台是否支持全局变量使用方式; 0008 若所述开发平台支持全局变量使用方式,则通过宏定义实现所述开发平台全局变 量的声明、定义及调用; 0009 若所述开发平台不支持全局变量使用方式,则为所。

12、述开发平台定义存储全局变量 的结构体,通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、定义及调 用,所述返回函数为从所述结构体获取全局变量的函数。 0010 另一方面,本发明的实施例提供一种全局变量管理装置,包括: 0011 查询单元,用于查询开发平台是否支持全局变量使用方式; 0012 第一定义单元,用于在所述查询单元查询到所述开发平台支持全局变量使用方式 时,通过宏定义实现所述开发平台全局变量的声明、定义及调用; 0013 第二定义单元,用于在所述查询单元查询到所述开发平台不支持全局变量使用方 式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现 所述。

13、开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全局变量 的函数。 0014 相对于现有技术,本发明实施例提供的技术方案能够在开发平台不支持全局变量 使用方式的情形下,通过为所述开发平台定义存储全局变量的结构体,通过宏定义并以返 回函数的形式实现所述开发平台全局变量的声明、定义及调用;使不支持全局变量使用方 说 明 书CN 102841782 A 2/6页 5 式的开发平台和支持全局变量使用方式的开发平台在对全局变量进行声明、定义及调用时 使用相同的定义形式,从而使不同平台能够采取统一的全量变量使用方式,提高了平台代 码的可移植性。 附图说明 0015 为了更清楚地说明本发明。

14、实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。 0016 图1为本发明实施例提供的全局变量管理方法的流程示意图; 0017 图2为本发明实施例提供的全局变量管理装置的结构框架图; 0018 图3为本发明实施例提供的另一全局变量管理装置的结构框架图。 具体实施方式 0019 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不。

15、是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。 0020 实施例1 0021 本发明实施例提供一种全局变量管理方法,如图1所示,该方法包括步骤101、 102、及103。 0022 101、查询开发平台是否支持全局变量使用方式;若所述开发平台支持全局变量使 用方式,则执行步骤102;若所述开发平台不支持全局变量使用方式,则执行步骤103。 0023 102、通过宏定义实现所述开发平台全局变量的声明、定义及调用。 0024 其中,所述通过宏定义实现所述开发平台全局变量的声明、定义及调用可以通过 以下的方式实现。

16、,包括: 0025 所述通过宏定义实现所述开发平台全局变量的声明为:在宏定义的参数列表中写 入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量。以C语言的 宏定义为例,所述通过宏定义实现所述开发平台全局变量的声明,具体可以为: 0026 #define DECLARE_GLOBE_VARIABLE(type,name)extern type name 0027 其中,需要说明的是,带有参数的宏定义的固定格式为:#define宏名(参数表) 字符串,例如:#define S(a,b)a*b;在程序中的应用为areaS(3,2);则其宏定义的执行 为:第一步areaS(3,2)被换。

17、为areaa*b;第二步areaS(3,2)被换为area3*2。 本发明实施例中,DECLARE_GLOBE_VARIABLE为宏名;参数表包括type和name,type为全局 变量的类型,name为全局变量的变量名;字符串为extern type name,表示声明一种类型的 全局变量。 0028 所述通过宏定义实现所述开发平台全局变量的定义为:在宏定义的参数列表中写 入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入 全局变量的类型以及对所述全局变量的赋值。以C语言的宏定义为例,所述通过宏定义实 说 明 书CN 102841782 A 3/6页 6 现所述。

18、开发平台全局变量的定义,具体可以为:#define DEFINE_GLOBE_VARIABLE(type, name,val)type nameval。其中,DEFINE_GLOBE_VARIABLE为宏名;参数表包括type、 name和val,val为全局变量的初始值;type nameval为字符串,表示为一种类型的全局 变量赋初值。 0029 所述通过宏定义实现所述开发平台全局变量的调用为:在宏定义的参数列表中写 入全局变量名,在宏定义的字符串中写入所述全局变量名。以C语言的宏定义为例,所述通 过宏定义实现所述开发平台全局变量的调用,具体可以为:#define GLOBE(name)n。

19、ame;其 中,GLOBE为宏名;参数表包括name;字符串为name。 0030 103、为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形 式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全 局变量的函数。 0031 其中,为所述开发平台定义存储全局变量的结构体,该结构体可以表示为如下形 式,但本发明实施例对此不进行限制,任何结构体的定义形式都可以应用于本发明实施例 中。 0032 typedef struct_GlobeVariable 0033 int var; 0034 int var2 0035 GlobeVariable; 0036 其。

20、中,所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明、 定义及调用,可以通过以下的方式实现,包括: 0037 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明为:在宏 定义的参数列表中写入全局变量的类型和全局变量名,并在宏定义的字符串中写入以返回 函数形式的全局变量的声明。例如,以C语言的宏定义为例,所述通过宏定义并以返回函数 的形式实现所述开发平台全局变量的声明,具体可以为: 0038 #define DECLARE_GLOBE_VARIABLE(type,name)extern type* FUN_GLOBE_ VARIABLE_#name(QQVOID); 0。

21、039 其中,DECLARE_GLOBE_VARIABLE为宏名;参数表包括type和name; 字符串为extern type*FUN_GLOBE_VARIABLE_#name(QQVOID),FUN_GLOBE_ VARIABLE_#name(QQVOID)为从所述结构体获取全局变量的函数。 0040 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为:在宏 定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏 定义的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值。以C语言的宏 定义为例,所述通过宏定义并以返回函数的形式实现所述开发平台。

22、全局变量的定义,具体 可以为: 0041 #define DEFINE_GLOBE_VARIABLE(type,name,val)type* 0042 FUN_GLOBE_VARIABLE_#name(QQVOID); 0043 其中,DEFINE_GLOBE_VARIABLE为宏名;参数表包括type、name和val,val为全局 变量的初始值;type*FUN_GLOBE_VARIABLE_#name(QQVOID)为字符串,表示为一种类型的 全局变量赋初值。 说 明 书CN 102841782 A 4/6页 7 0044 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用为。

23、:在宏 定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。 以C语言的宏定义为例,所述通过宏定义并以返回函数的形式实现所述开发平台全局变量 的调用,具体可以为: 0045 #define GLOBE(name)(*FUN_GLOBE_VARIABLE_#name(); 0046 其中,GLOBE为宏名;参数表包括name;字符串为(*FUN_GLOBE_ VARIABLE_#name()。 0047 进一步,所述FUN_GLOBE_VARIABLE_#name()可以定义为如下形式,包括: 0048 type*FUN_GLOBE_VARIABLE_#name() 0。

24、049 return&(QGetGlobeVar iable()-name); 0050 。 0051 进一步的,当不支持全局变量使用方式的开发平台运行支持全局变量使用方式开 发平台的应用程序时,获取所述支持全局变量使用方式开发平台的应用程序的全局变量信 息,将所述全局变量信息保存在所述结构体中,以使得所述不支持全局变量使用方式的开 发平台成功运行所述应用程序。 0052 其中,获取支持全局变量使用方式开发平台的应用程序的全局变量信息,可以通 过程序员人工获取,也可以通过扫描应用程序的代码获取,在具体实施时,本发明实施例对 此不进行限制。 0053 本发明实施例中,在开发平台不支持全局变量使用。

25、方式的情形下,通过为所述开 发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全 局变量的声明、定义及调用;使不支持全局变量使用方式的开发平台和支持全局变量使用 方式的开发平台,在对全局变量进行声明、定义及调用时使用相同的定义形式,从而使不同 平台能够采取统一的全量变量使用方式,提高了平台代码的可移植性,降低了多个开发平 台代码开发及移植的代价。 0054 实施例2 0055 本发明实施例提供一种全局变量管理装置,如图2所示,该装置包括:查询单元 21、第一定义单元22、第二定义单元23。 0056 查询单元21,用于查询开发平台是否支持全局变量使用方式。 0057 。

26、第一定义单元22,用于在所述查询单元21查询到所述开发平台支持全局变量使 用方式时,通过宏定义实现所述开发平台全局变量的声明、定义及调用。 0058 其中,所述第一定义单元22通过宏定义实现所述开发平台全局变量的声明、定义 及调用具体可以通过以下的方式实现,包括: 0059 所述通过宏定义实现所述开发平台全局变量的声明为:在宏定义的参数列表中写 入全局变量的类型和全局变量名,并在宏定义的字符串中写入声明全局变量;其中,所述第 一定义单元22通过宏定义实现所述开发平台全局变量的声明的具体举例,可以参考实施 例1中的步骤102中的相应描述,本发明实施例此处将不再赘述。 0060 所述通过宏定义实现。

27、所述开发平台全局变量的定义为:在宏定义的参数列表中写 入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏定义的字符串中写入 全局变量的类型以及对所述全局变量的赋值;其中,所述第一定义单元22通过宏定义实现 说 明 书CN 102841782 A 5/6页 8 所述开发平台全局变量的定义的具体举例,可以参考实施例1中的步骤102中的相应描述, 本发明实施例此处将不再赘述。 0061 所述通过宏定义实现所述开发平台全局变量的调用为:在宏定义的参数列表中写 入全局变量名,在宏定义的字符串中写入所述全局变量名。其中,所述第一定义单元22通 过宏定义实现所述开发平台全局变量的调用的具体举例,。

28、可以参考实施例1中的步骤102 中的相应描述,本发明实施例此处将不再赘述。 0062 第二定义单元23,用于在所述查询单元21查询到所述开发平台不支持全局变量 使用方式时,为所述开发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形 式实现所述开发平台全局变量的声明、定义及调用,所述返回函数为从所述结构体获取全 局变量的函数。 0063 其中,所述第二定义单元23通过宏定义并以返回函数的形式实现所述开发平台 全局变量的声明、定义及调用具体可以通过以下的方式实现,包括: 0064 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的声明为:在宏 定义的参数列表中写入全局变量的类型和全。

29、局变量名,并在宏定义的字符串中写入以返回 函数形式的全局变量的声明;其中,所述第二定义单元23通过宏定义并以返回函数的形式 实现所述开发平台全局变量的声明的具体举例,可以参考实施例1中的步骤103中的相应 描述,本发明实施例此处将不再赘述。 0065 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义为:在宏 定义的参数列表中写入全局变量的类型、全局变量名、以及所述全局变量的初始值,并在宏 定义的字符串中写入全局变量的类型以及返回函数形式的全局变量的赋值;其中,所述第 二定义单元23通过宏定义并以返回函数的形式实现所述开发平台全局变量的定义的具体 举例,可以参考实施例1中的步骤10。

30、3中的相应描述,本发明实施例此处将不再赘述。 0066 所述通过宏定义并以返回函数的形式实现所述开发平台全局变量的调用为:在宏 定义的参数列表中写入全局变量名,在宏定义的字符串中写入返回函数形式的全局变量。 其中,所述第二定义单元23通过宏定义并以返回函数的形式实现所述开发平台全局变量 的调用的具体举例,可以参考实施例1中的步骤103中的相应描述,本发明实施例此处将不 再赘述。 0067 进一步的,如图3所示,该装置还可包括:获取单元24、存储单元25。 0068 获取单元24,用于当不支持全局变量使用方式的开发平台运行支持全局变量使用 方式开发平台的应用程序时,获取所述支持全局变量使用方式开。

31、发平台的应用程序的全局 变量信息。其中,所述获取单元24获取支持全局变量使用方式开发平台的应用程序的全 局变量信息,可以通过程序员人工获取,也可以通过扫描应用程序的代码获取,在具体实施 时,本发明实施例对此不进行限制。 0069 存储单元25,用于将所述获取单元24获取的所述全局变量信息保存在所述结构 体中,以使得所述不支持全局变量使用方式的开发平台成功运行所述应用程序。 0070 本发明实施例中,在开发平台不支持全局变量使用方式的情形下,通过为所述开 发平台定义存储全局变量的结构体,通过宏定义并以返回函数的形式实现所述开发平台全 局变量的声明、定义及调用;使不支持全局变量使用方式的开发平台和。

32、支持全局变量使用 方式的开发平台,在对全局变量进行声明、定义及调用时使用相同的定义形式,从而使不同 说 明 书CN 102841782 A 6/6页 9 平台能够采取统一的全量变量使用方式,提高了平台代码的可移植性,降低了多个开发平 台代码开发及移植的代价。 0071 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳 的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部 分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计 算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例所述的方法。 0072 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。 说 明 书CN 102841782 A 1/2页 10 图1 图2 说 明 书 附 图CN 102841782 A 10 2/2页 11 图3 说 明 书 附 图CN 102841782 A 11 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1