《全局变量管理方法及装置.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 。