条件编译实现方法、装置、介质及设备制造方法及图纸

技术编号:37136498 阅读:22 留言:0更新日期:2023-04-06 21:36
本申请提供了一种条件编译实现方法、装置、介质及设备,针对应用于不同客户端的多端代码,确定在客户端之间的条件编译策略,其中方法包括:分析各客户端所执行的代码逻辑和/或代码流程的差异性,根据差异性分析结果,确定对应的条件编译策略;其中,根据差异性分析结果,确定所述条件编译策略为基于代码维度的条件编译或基于文件维度的条件编译。本申请通过优化条件编译实现方法,提高多端代码适配各个客户端的效率。个客户端的效率。个客户端的效率。

【技术实现步骤摘要】
条件编译实现方法、装置、介质及设备


[0001]本申请涉及计算机
,尤其是涉及到一种条件编译实现方法、装置、介质及设备。

技术介绍

[0002]一般情况下,源程序中的每一行代码都要参加编译,但有时出于对程序代码优化的考虑,希望只对其中一部分内容进行编译,此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译(conditional compile)。可见,条件编译是根据不同情况编译不同代码、产生不同目标文件的机制,条件编译可以使得程序更加容易移植,例如通过条件编译实现适用于多个客户端(APP或小程序)的多端代码。本领域技术人员发现,如何优化条件编译实现方案,从而提高多端代码适配各个客户端的效率,是需要解决的一个技术问题。

技术实现思路

[0003]有鉴于此,本申请提供了一种条件编译实现方法、装置、介质及电子设备,主要目的在于通过优化条件编译实现方法,提高多端代码适配各个客户端的效率。
[0004]依据本申请的一个方面,提供了一种条件编译实现方法,针对应用于不同客户端的多端代码,确定在客户端之间的条件编译策略,所述方法包括:分析各客户端所执行的代码逻辑和/或代码流程的差异性,根据差异性分析结果,确定对应的条件编译策略;其中,若所述差异性分析结果符合预设的第一差异结果,所述第一差异结果为各客户端代码差异小于或等于预设的最小差异阈值,确定所述条件编译策略为基于代码维度的条件编译;若所述差异性分析结果符合预设的第二差异结果,所述第二差异结果为各客户端代码差异大于预设的最大差异阈值,确定所述条件编译策略为基于文件维度的条件编译。
[0005]依据本申请的一个方面,提供了一种条件编译实现装置,针对应用于不同客户端的多端代码,确定在客户端之间的条件编译策略,所述装置包括:差异性分析单元,用于分析各客户端所执行的代码逻辑和/或代码流程的差异性;策略确定单元,用于根据差异性分析结果,确定对应的条件编译策略;其中,若所述差异性分析结果符合预设的第一差异结果,所述第一差异结果为各客户端代码差异小于或等于预设的最小差异阈值,确定所述条件编译策略为基于代码维度的条件编译;若所述差异性分析结果符合预设的第二差异结果,所述第二差异结果为各客户端代码差异大于预设的最大差异阈值,确定所述条件编译策略为基于文件维度的条件编译。
[0006]依据本申请的一个方面,提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述条件编译实现方法。
[0007]依据本申请的一个方面,提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述条件编译实现方法。
[0008]借由上述技术方案,本申请提供的一种条件编译实现方法、装置、介质及设备,本申请中,基于各个客户端的差异性分析结果选择不同的条件编译策略的方式,可以有效提高代码兼容多个客户端的效率,当差异性较小时,采取基于代码维度的条件编译,当差异性较大时,采取基于文件维度的条件编译,另外还支持文件维度和代码维度的双维度条件编译,这种根据代码差异性区分不同条件编译策略的方式,可以提高代码或文件加载运行效率。
[0009]在基于代码维度条件编译实现过程中,通过针对不同类型文件分别采用条件编译语法编写注释语句,将注释语句插入至代码中,并依据注释语句中的变量区分不同客户端对应不同的代码,从而在命中正则表达式之后,执行当前客户端对应变量对应的代码,由此实现不同客户端实现不同功能的代码,达到条件编译的目的。采用注释语句实现条件编译的方式,不占用代码运行资源,在编译后可将符合条件的代码清空,由此可达到压缩代码体积的效果。
[0010]在基于文件维度条件编译实现过程中,首先在配置文件中设置用于区分不同客户端特定文件的条件编译变量;然后以所配置的特殊后缀修改文件名,在编译时,通过特殊后缀选择对应的文件进行编译,实现基于文件维度的条件编译。由此,在各个客户端之间具有大量的端上差异性代码的情况,直接对文件进行文件维度的条件编译,针对各端指定特殊后缀规范,在编译输出时,在输出目录下对应端的特殊后缀标识,会被优先用来生成对应端的版本源文件,从而具有更好的可读性和可扩展性。
[0011]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
[0012]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0013]图1示出了本申请实施例提供的一种条件编译实现方法示意图;
[0014]图2示出了本申请实施例提供的一种条件编译实现方法中基于代码维度的条件编译实现流程图;
[0015]图3示出了本申请实施例提供的一种条件编译实现方法中基于文件维度的条件编译实现流程图;
[0016]图4示出了本申请实施例提供的一种条件编译实现方法中基于文件维度和代码维度的双维度条件编译实现流程图;
[0017]图5示出了本申请实施例提供的一种条件编译实现装置结构示意图;
[0018]图6示出了本申请实施例提供的一种条件编译实现装置中代码维度条件编译结构示意图;
[0019]图7示出了本申请实施例提供的一种条件编译实现装置中文件维度条件编译结构示意图。
具体实施方式
[0020]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0021]参见图1,示出了本申请实施例提供的一种条件编译实现方法示意图。本申请提供的条件编译实现方法,针对应用于不同客户端的多端代码,确定在客户端之间的条件编译策略。
[0022]首先,分析各客户端所执行的代码逻辑和/或代码流程的差异性。
[0023]如前所述,条件编译是根据不同情况编译不同代码、产生不同目标文件的机制,条件编译可以使得程序更加容易移植,例如通过条件编译实现适用于多个客户端的多端代码。
[0024]因此,为了实现在多个客户端之间的条件编译,需要明确各个客户端之间的代码差异性。代码差异性包括代码逻辑差异性和代码流程差异性。其中,代码逻辑差异性是指代码逻辑之间的不同之处,代码逻辑可简单理解为“满足某个条件则执行第一操作否则执行第二操作”,即代码要做什么;代码流程差异性是指代码流程之间的不同之处,代码流程可简单理解为每个逻辑任务的处理顺序,即代码要本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种条件编译实现方法,其特征在于,针对应用于不同客户端的多端代码,确定在客户端之间的条件编译策略,所述方法包括:分析各客户端所执行的代码逻辑和/或代码流程的差异性,根据差异性分析结果,确定对应的条件编译策略;其中,若所述差异性分析结果符合预设的第一差异结果,所述第一差异结果为各客户端代码差异小于或等于预设的最小差异阈值,确定所述条件编译策略为基于代码维度的条件编译;若所述差异性分析结果符合预设的第二差异结果,所述第二差异结果为各客户端代码差异大于预设的最大差异阈值,确定所述条件编译策略为基于文件维度的条件编译。2.根据权利要求1所述的方法,其特征在于,还包括实现所述基于代码维度的条件编译,包括:确定代码维度条件编译语法,并编写代码维度条件编译的正则表达式,所述正则表达式包括所述代码维度条件编译语法的命中规则;以所述代码维度条件编译语法编写注释语句,并插入至所述多端代码中;针对当前客户端,在所述多端代码运行过程中,依据所述注释语句确定是否命中所述正则表达式,并执行命中所述正则表达式的条件编译代码。3.根据权利要求2所述的方法,其特征在于,所述编写代码维度条件编译的正则表达式,包括:确定支持代码维度条件编译的文件类型;针对不同文件类型,分别设置所述代码维度条件编译语法的命中规则,并集合所有文件类型的命中规则,构成所述正则表达式。4.根据权利要求3所述的方法,其特征在于,所述确定支持代码维度条件编译的文件类型,包括:确定所述多端代码的领域特定语言所支持的文件类型;基于所述多端代码的领域特定语言所支持的文件类型,确定出支持注释语句的文件类型以及不支持注释语句的文件类型;对所述不支持注释语句的文件类型进行扩展,得到扩展后支持注释语句的文件类型;集合所有支持注释语句的文件类型为所述支持代码维度条件编译的文件类型。5.根据权利要求2所述的方法,其特征在于,所述以所述代码维度条件编译语法编写注释语句,包括:声明用...

【专利技术属性】
技术研发人员:刘宇刘智康
申请(专利权)人:拉扎斯网络科技上海有限公司
类型:发明
国别省市:

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

1