CN116756103B - 基于使用行的宏定义文本展开方法、电子设备和介质 - Google Patents

基于使用行的宏定义文本展开方法、电子设备和介质 Download PDF

Info

Publication number
CN116756103B
CN116756103B CN202311066610.7A CN202311066610A CN116756103B CN 116756103 B CN116756103 B CN 116756103B CN 202311066610 A CN202311066610 A CN 202311066610A CN 116756103 B CN116756103 B CN 116756103B
Authority
CN
China
Prior art keywords
macro
target
line
expansion
text
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.)
Active
Application number
CN202311066610.7A
Other languages
English (en)
Other versions
CN116756103A (zh
Inventor
张邦全
赵建
林航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Rongjian Software Technology Co ltd
Beijing Yunshu Innovation Software Technology Co ltd
Shanghai Hejian Industrial Software Group Co Ltd
Original Assignee
Chengdu Rongjian Software Technology Co ltd
Beijing Yunshu Innovation Software Technology Co ltd
Shanghai Hejian Industrial Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Rongjian Software Technology Co ltd, Beijing Yunshu Innovation Software Technology Co ltd, Shanghai Hejian Industrial Software Group Co Ltd filed Critical Chengdu Rongjian Software Technology Co ltd
Priority to CN202311066610.7A priority Critical patent/CN116756103B/zh
Publication of CN116756103A publication Critical patent/CN116756103A/zh
Application granted granted Critical
Publication of CN116756103B publication Critical patent/CN116756103B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1737Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及计算机技术领域,尤其涉及一种基于使用行的宏定义文本展开方法、电子设备和介质,方法包括步骤S1、初始化宏使用行展开列表为空;步骤S2、判断是否包括目标宏使用行的宏展开文本,若是,则将目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3;步骤S3、确定当前待展开宏,在代码存储单元中展开当前待展开宏;步骤S4、判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并存储至宏展开列表中,结束流程,否则,返回执行步骤S3。本发明节省了宏文本展开的内存和计算资源消耗。

Description

基于使用行的宏定义文本展开方法、电子设备和介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于使用行的宏定义文本展开方法、电子设备和介质。
背景技术
宏定义允许用户定义一个文本的别名,部分编程语言支持宏定义语法,例如System Verilog语言。在代码语义解析之前的预处理阶段,需要先用宏展开文本替换宏文本,从而能够正确的解析设计代码语义。预处理阶段的替换操作会改变用户的原始代码结构,而在代码编辑软件或者代码调试软件中,一般需要保持用户的原始代码结构,同时可以采取某些方式提供可以查看宏展开文本的方法。但在此之前,程序必须能够对宏的文本进行展开。
现有技术中,通常预先将所有的宏定义文本全部逐一展开,需要耗费大量的内存和计算资源。由此可知,如何节省宏文本展开的内存和计算资源消耗成为亟待解决的技术问题。
发明内容
本发明目的在于,提供一种基于使用行的宏定义文本展开方法、电子设备和介质,支持动态生成宏展开文本,节省了宏文本展开的内存和计算资源消耗。
根据本发明第一方面,提供了一种基于使用行的宏定义文本展开方法,包括:
步骤S1、初始化宏使用行展开列表为空;
步骤S2、判断当前宏使用行展开列表中是否包括目标宏使用行的宏展开文本,若包括,则将当前宏使用行展开列表中目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3;
步骤S3、基于目标宏使用行对应的宏使用列表确定当前待展开宏,在代码存储单元中展开当前待展开宏,所述宏使用列表包括按序排列的宏使用信息;
步骤S4、基于目标宏使用行对应的宏使用列表判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并将目标宏使用行和目标宏展开文本存储至宏展开列表中,结束流程,否则,返回执行步骤S3。
根据本发明第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明第一方面所述的方法。
根据本发明第三方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本发明第一方面所述的方法。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种基于使用行的宏定义文本展开方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
本发明通过宏使用列表动态展开宏使用行,且能通过宏使用行展开列表复用已经展开过的宏使用行的宏展开文本,支持动态生成宏展开文本,节省了宏文本展开的内存和计算资源消耗。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于使用行的宏定义文本展开方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种基于使用行的宏定义文本展开方法,如图1所示,包括:
步骤S1、初始化宏使用行展开列表为空。
需要说明的是,本发明实施例对于使用行的宏文本是按需动态展开的,因此,宏使用行展开列表初始为空。
步骤S2、判断当前宏使用行展开列表中是否包括目标宏使用行的宏展开文本,若包括,则将当前宏使用行展开列表中目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3。
需要说明的是,通过设置宏使用行展开列表,存储已展开的宏使用行对应的宏展开文本,使得每一宏使用行仅需展开一次。
步骤S3、基于目标宏使用行对应的宏使用列表确定当前待展开宏,在代码存储单元中展开当前待展开宏,所述宏使用列表包括按序排列的宏使用信息。
其中,基于宏使用列表确定目标宏使用行中宏展开的顺序,在存储单元中按序注意展开目标宏使用行中的宏。
步骤S4、基于目标宏使用行对应的宏使用列表判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并将目标宏使用行和目标宏展开文本存储至宏展开列表中,结束流程,否则,返回执行步骤S3。
本发明基于使用行进行宏文本展开,采用动态的方式生成宏全展开文本,极大程度的降低了存储空间和计算资源的需求。
作为一种实施例,具体可以通过选中代码行的方式确定目标宏使用行,当通过步骤S1-步骤S4获取目标宏使用行对应的目标宏展开文本之后,可以在源代码目标宏使用行的显示位置以嵌入式或者浮窗等形式显示目标宏展开文本。
作为一种实施例,所述方法还包括:
步骤S10、在源代码编译阶段,输出源代码中出现的宏使用行标识以及生成宏使用行对应的宏使用列表。
其中,第x个宏使用行标识Lx对应的宏使用列表为(A1 x,A2 x,…,Ai x,…,Af(x) x),Ai x为Lx的第i个宏使用信息,i的取值范围为1到f(x),f(x)为Lx对应的宏使用数量,x的取值范围为1到X,X为源代码中宏使用行总数,A1 x,A2 x,…,Ai x,…,Af(x) x按照宏出现的顺序排列,Ai x={Bi x, Ci x,Di x},Bi x为Ai x对应的宏进入开始列,Ci x为Ai x对应的宏原本值,Di x为Ai x对应的宏第一层展开值。
其中,源代码编译阶段,通过编译软件能够输出源代码中出现的宏使用行标识以及每一宏使用行中每一宏对应的进入开始列、宏原本值和宏第一层展开值。需要说明的是,一些宏中可能会嵌套一层或多层其他的宏,但被嵌套的宏与源代码代码进入被嵌套宏对应的开始列均相同,均为源代码中对应宏所在的列。宏原本值为宏展开前的原本值,宏第一层展开值为宏展开一次的展开值。一些宏展开之后还包括其他宏,但多层直接展开的话对编译器要求过高,因此,仅设置宏第一层展开值即可。
作为一种实施例,所述宏使用行标识基于宏使用行所在的文件名称和行号生成。需要说明的是,源代码中通常包括多个文件,每一文件中每行代码具有对应的行号,因此需要宏使用行所在的文件名称和行号结合才能准确定位到宏使用行。
作为一种实施例,所述步骤S3包括:
步骤S31、初始设置i=1。
需要说明的是,本发明实施例按照目标宏使用行对应的宏使用列表中宏出现的顺序来逐个展开宏,因此,i是从1开始取值。
步骤S32、基于目标Lx和目标Lx对应的目标Bi x确定当前待展开宏对应的当前Ci x和当前Di x
其中,通过目标Lx能够确定对应的(A1 x,A2 x,…,Ai x,…,Af(x) x),通过当前i的取值,能够确定目标Lx对应的目标Bi x,然后基于目标Bi x进一步确定当前Ci x和当前Di x
步骤S33、将当前代码存储单元中目标宏使用行标识Lx和Bi x对应位置处的当前Ci x替换为当前Di x
其中,通过将当前代码存储单元中目标宏使用行Lx和Bi x对应位置处的当前Ci x替换为当前Di x实现在代码存储单元中展开当前待展开宏。
所述步骤S4包括:
步骤S41、若i=f(x),则确定目标宏使用行的宏全部展开,否则,设置i=i+1,返回执行步骤S32。
通过步骤S31-步骤S33,以及步骤S41,实现了按照目标宏使用行宏出现的顺序逐一展开宏文本。
作为一种实施例,所述步骤S32之后还包括:
步骤S321、判断当前Ci x是否为预设的无需展开宏,若是,则直接执行步骤S4,否则,执行步骤S33,其中,所述预设的无需展开宏为设置在“`ifdef”、“`ifndef” 、“`elsif”语句等语句之后的宏。
需要说明的是,设置在“`ifdef”、“`ifndef” 、“`elsif”语句等语句之后的宏实质上为预处理阶段的宏,并非真正的宏使用,因此,可以通过步骤S321进行判断,若当前Ci x为预设的无需展开宏,则不对当前Ci x执行宏展开操作。
作为一种实施例,所述步骤S4包括:
步骤S42、判断所述目标宏展开文本是否等于目标宏使用行的原始代码,若是,则将目标宏使用行确定为非含宏代码行,若存在该目标宏使用行对应的宏使用列表,则将该目标宏使用行对应的宏使用列表删除。
需要说明的是,经过步骤S1-步骤S3之后,若所述目标宏展开文本等于目标宏使用行的原始代码,说明目标宏展开文本并且有包含宏,因此,目标宏使用行确定为非含宏代码行。当确定目标宏使用行为非含宏代码行之后,若存在该目标宏使用行对应的宏使用列表,说明该目标宏使用行对应的宏使用列表有误,将该目标宏使用行对应的宏使用列表删除,相当于对目标宏使用行对应的宏使用列表进行了二次校验,提高了基于使用行的宏定义文本展开的准确性。
本发明实施例通过宏使用列表动态展开宏使用行,且能通过宏使用行展开列表复用已经展开过的宏使用行的宏展开文本,支持动态生成宏展开文本,节省了宏文本展开的内存和计算资源消耗。
在System Verilog语言中,由于宏定义的文本值是可以动态改变的。因此在源代码中展开对应的宏文本时,需要基于具体的宏使用行处的宏文本来展开宏,才能获得正确的结果。但是,基于上述宏文本展开算法,需要在每一宏使用行处进行展开算法运算。而对于在整个仿真过程中,宏定义的文本值固定不变的常量宏,在每一处使用行的展开值都是一样的,如果对每一处常量宏,在每一处进行展开,会产生大量重复计算,需要耗费大量的内存和计算资源。基于此本发明实施例进一步提出了一种基于常量宏定义的宏文本展开方法,具体包括:
步骤C1、初始化常量宏展开集合和宏使用行展开列表为空,所述常量宏展开集合用于存储常量宏标识和常量宏标识对应的展开文本;所述宏使用行展开列表用于存储非常量宏使用行标识和非常量宏使用行标识对应的非常量宏使用行的宏展开文本,非常量宏使用行中包括至少一个非常量宏。
需要说明的是,本发明实施例对于使用行的宏文本是按需动态展开的,因此,常量宏展开集合和宏使用行展开列表初始为空。需要说明的是,非常量宏使用行中包括至少一个非常量宏指的是,非常量宏使用行中包括一个或多个非常量宏,即可以全部为非常量宏,也可以包括常量宏。
由于源代码中可能包括多个文件,因此,非常量宏使用行标识基于非常量宏使用行所在的文件名称和行号生成。
步骤C2、判断当前常量宏展开集合中是否包括目标宏使用行的宏展开文本,若包括,则基于当前常量宏展开集合确定目标展开文本,结束流程,否则,执行步骤C3。
需要说明的是,常量宏可以出现在源代码中不同的行,但由于常量宏在整个源代码中的值不变,因此,即便位置不同,但也可以直接复用,因此当能够直接基于当前常量宏展开集合确定目标展开文本时,则不用执行后续操作。
步骤C3、判断当前宏使用行展开列表中是否包括目标宏使用行的宏展开文本,若包括,则将当前宏使用行展开列表中目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,将目标宏使用行的原始代码中的每一个宏对应的常量宏展开标记默认标注为“true”,执行步骤C4。
需要说明的是,当需要复用当前宏使用行展开列表中的宏展开文本时,前提是目标宏使用行之前已经被展开过,且存储在了宏使用行展开列表中。
步骤C4、确定当前待展开宏,若当前待展开宏标识在预先生成的常量宏标识集合中,则执行步骤C5,否则,将当前待展开宏的宏展开标记标注为“false”执行步骤C6。
步骤C5、判断当前常量宏展开集合中是否包括当前待展开宏的宏展开文本,若包括,则直接将当前常量宏展开集合中当前待展开宏的宏展开文本确定为当前待展开宏的宏展开文本,执行步骤S7,若不包括,则执行步骤C6。
可以理解的是,步骤C5进一步复用了常量宏展开集合中已经存在的宏展开文本,使得常量宏仅需被展开一次。
步骤C6、基于步骤S1-步骤S4在代码存储单元中展开当前待展开宏,若当前待展开宏的宏展开标记标注为“true”,则将当前待展开宏标识和当前待展开宏对应的展开文本添加至常量宏展开集合中,然后执行步骤C7,若当前待展开宏的宏展开标记标注为“false”,则直接执行步骤C7。
步骤C7、判断目标宏使用行的宏是否全部展开,若是,将当前代码存储单元中存储的代码确定为目标宏展开文本,执行步骤C8;否则,返回执行步骤C4;
步骤C8、将目标宏使用行和目标宏展开文本存储至宏展开列表中,结束流程。
本发明通过对常量宏的文本展开的复用,大幅降低了大量固定值的宏的展开运算需求。
作为一种实施例,所述步骤C2包括:
步骤C21、若目标宏使用行为一个宏,则执行步骤C22。
步骤C22、判断目标宏使用行的宏标识是否在当前常量宏展开集合中,若是,则将当前常量宏展开集合中目标宏使用行的宏标识对应的展开文本确定为目标展开文本,结束流程,否则,执行步骤C3。
可以理解的是,当目标宏使用行为一个宏且在当前常量宏展开集合中能够获取到该宏的展开文本时,直接基于当前常量宏展开集合即可实现目标宏使用行的宏文本展开。
作为一种实施例,所述步骤C2包括:
步骤C201、若目标宏使用行包括多个宏,则执行步骤C202;
步骤C202、判断目标宏使用行所有宏标识是否在当前常量宏展开集合中,若是,则将当前常量宏展开集合中标宏使用行的所有宏标识对应的展开文本替换目标宏使用行中对应的所有宏,生成目标展开文本,结束流程,否则,执行步骤C3。
可以理解的是,当目标宏使用行包括多个宏,且所包含的宏全部为常量宏,且这些常量宏均已在当前常量宏展开集合中存在对应的展开文本时,直接基于当前常量宏展开集合即可实现目标宏使用行的宏文本展开。
作为一种实施例,所述方法还包括:
步骤C10、遍历所述源代码,将出现undefine且又重新define的宏确定为非常量宏,将包含可变参数的宏确定为非常量宏,将所述源代码中非常量宏之外的其他宏确定为常量宏,基于所有常量宏生成常量宏标识集合。
需要说明的是,当一个宏出现undefine且又重新define时,说明该宏的值在源代码中发生了变化,该宏为非常量宏。当宏中包含可变参数时,该宏的值也是可能发生变化的,该宏也为非常量宏。除此之外,源代码中的其他宏均为常量宏。
作为一种实施例,所述常量宏展开集合还包括常量宏使用行原始代码和常量宏使用行对应的宏展开文本,所述常量宏使用行为所包含的宏全部为常量宏的使用行。
作为一种实施例,在所述常量宏展开集合还包括常量宏使用行原始代码和常量宏使用行对应的宏展开文本的基础上,所述步骤C2包括:
步骤C211、判断目标宏使用行的原始代码是否在当前常量宏展开集合中,若是,则将当前常量宏展开集合中目标宏使用行的原始代码对应的展开文本确定为目标展开文本,否则,执行步骤C201。
需要说明的是,若在所述常量宏展开集合还包括常量宏使用行原始代码和常量宏使用行对应的宏展开文本的基础上,可以优先执行步骤C211,实现整行常量宏使用行的复用,然后再执行步骤C21-步骤C22的逻辑,再进一步执行步骤C201-步骤C202的逻辑。最大程度实现常量宏展开文本的复用,提高目标宏使用行的展开效率。
作为一种实施例,在所述常量宏展开集合还包括常量宏使用行原始代码和常量宏使用行对应的宏展开文本的基础上,所述步骤C8包括:
步骤C81、若目标宏使用行对应的所有宏的宏展开标记标注均为“true”,则将目标宏使用行原始代码和目标宏展开文本存储在常量宏展开集合中,否则,将目标宏使用行和目标宏展开文本存储至宏展开列表中,结束流程。
本发明实施例通过设置常量宏展开集合和宏使用行展开列表,使得常量宏仅执行一次展开操作,即可实现复用,减少了重复计算,节省了常量宏文本展开的内存和计算资源消耗。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。
需要说明的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明实施例所述的方法。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本发明实施例所述的方法。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (8)

1.一种基于使用行的宏定义文本展开方法,其特征在于,包括:
步骤S2、判断当前宏使用行展开列表中是否包括目标宏使用行的宏展开文本,所述使用行展开列表用于存储已展开的宏使用行对应的宏展开文本,所述宏使用行展开列表初始状态为空,若包括,则将当前宏使用行展开列表中目标宏使用行对应的宏展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3;
步骤S3、基于目标宏使用行对应的宏使用列表确定当前待展开宏,在代码存储单元中展开当前待展开宏,所述宏使用列表包括按序排列的宏使用信息;
步骤S4、基于目标宏使用行对应的宏使用列表判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并将目标宏使用行和目标宏展开文本存储至宏使用行展开列表中,结束流程,否则,返回执行步骤S3。
2.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
步骤S10、在源代码编译阶段,输出源代码中出现的宏使用行标识以及生成宏使用行对应的宏使用列表;
其中,第x个宏使用行标识Lx对应的宏使用列表为(A1 x,A2 x,…,Ai x,…,Af(x) x),Ai x为Lx的第i个宏使用信息,i的取值范围为1到f(x),f(x)为Lx对应的宏使用数量,x的取值范围为1到X,X为源代码中宏使用行总数,A1 x,A2 x,…,Ai x,…,Af(x) x按照宏出现的顺序排列,Ai x={Bi x,Ci x,Di x},Bi x为Ai x对应的宏进入开始列,Ci x为Ai x对应的宏原本值,Di x为Ai x对应的宏第一层展开值。
3.根据权利要求2所述的方法,其特征在于,
所述宏使用行标识基于宏使用行所在的文件名称和行号生成。
4.根据权利要求2所述的方法,其特征在于,
所述步骤S3包括:
步骤S31、初始设置i=1;
步骤S32、基于目标Lx和目标Lx对应的目标Bi x确定当前待展开宏对应的当前Ci x和当前Di x
步骤S33、将当前代码存储单元中目标宏使用行标识Lx和Bi x对应位置处的当前Ci x替换为当前Di x
所述步骤S4包括:
步骤S41、若i=f(x),则确定目标宏使用行的宏全部展开,否则,设置i=i+1,返回执行步骤S32。
5.根据权利要求4所述的方法,其特征在于,
所述步骤S32之后还包括:
步骤S321、判断当前Ci x是否为预设的无需展开宏,若是,则直接执行步骤S4,否则,执行步骤S33,所述预设的无需展开宏为设置在“`ifdef”、“`ifndef”、“`elsif”语句之后的宏。
6.根据权利要求1所述的方法,其特征在于,
所述步骤S4包括:
步骤S42、判断所述目标宏展开文本是否等于目标宏使用行的原始代码,若是,则将目标宏使用行确定为非含宏代码行,若存在该目标宏使用行对应的宏使用列表,则将该目标宏使用行对应的宏使用列表删除。
7.一种电子设备,其特征在于,包括:
至少一个处理器;
以及,与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行前述权利要求1-6任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行前述权利要求1-6中任一项所述的方法。
CN202311066610.7A 2023-08-23 2023-08-23 基于使用行的宏定义文本展开方法、电子设备和介质 Active CN116756103B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311066610.7A CN116756103B (zh) 2023-08-23 2023-08-23 基于使用行的宏定义文本展开方法、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311066610.7A CN116756103B (zh) 2023-08-23 2023-08-23 基于使用行的宏定义文本展开方法、电子设备和介质

Publications (2)

Publication Number Publication Date
CN116756103A CN116756103A (zh) 2023-09-15
CN116756103B true CN116756103B (zh) 2023-10-27

Family

ID=87950130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311066610.7A Active CN116756103B (zh) 2023-08-23 2023-08-23 基于使用行的宏定义文本展开方法、电子设备和介质

Country Status (1)

Country Link
CN (1) CN116756103B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117111951B (zh) * 2023-08-23 2024-03-15 北京云枢创新软件技术有限公司 基于使用链的宏文本展开方法、电子设备和介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011113148A (ja) * 2009-11-24 2011-06-09 Nomura Research Institute Ltd マクロ展開方法およびプリプロセッサ
CN114089981A (zh) * 2022-01-24 2022-02-25 麒麟软件有限公司 基于VSCode集成开发环境快速制作spec文件的方法及插件工具
CN114647439A (zh) * 2020-12-21 2022-06-21 华为技术有限公司 一种代码扫描的方法、代码迁移的方法及相关装置
US11481200B1 (en) * 2021-10-11 2022-10-25 International Business Machines Corporation Checking source code validity at time of code update
CN115437619A (zh) * 2022-09-28 2022-12-06 中国平安人寿保险股份有限公司 iOS分类属性的添加方法和装置、电子设备及存储介质
CN115658539A (zh) * 2022-11-09 2023-01-31 眸芯科技(上海)有限公司 代码中宏定义的完整性检测方法、装置及芯片仿真系统
CN116627429A (zh) * 2023-07-20 2023-08-22 无锡沐创集成电路设计有限公司 一种汇编代码生成方法、装置及电子设备和存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011113148A (ja) * 2009-11-24 2011-06-09 Nomura Research Institute Ltd マクロ展開方法およびプリプロセッサ
CN114647439A (zh) * 2020-12-21 2022-06-21 华为技术有限公司 一种代码扫描的方法、代码迁移的方法及相关装置
US11481200B1 (en) * 2021-10-11 2022-10-25 International Business Machines Corporation Checking source code validity at time of code update
CN114089981A (zh) * 2022-01-24 2022-02-25 麒麟软件有限公司 基于VSCode集成开发环境快速制作spec文件的方法及插件工具
CN115437619A (zh) * 2022-09-28 2022-12-06 中国平安人寿保险股份有限公司 iOS分类属性的添加方法和装置、电子设备及存储介质
CN115658539A (zh) * 2022-11-09 2023-01-31 眸芯科技(上海)有限公司 代码中宏定义的完整性检测方法、装置及芯片仿真系统
CN116627429A (zh) * 2023-07-20 2023-08-22 无锡沐创集成电路设计有限公司 一种汇编代码生成方法、装置及电子设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
C语言宏展开程序及其在教学中的应用;吴斌;常州信息职业技术学院学报(02);全文 *
浅析C语言中宏定义的使用;王秀玲;;大众科学(科学研究与实践)(16);全文 *

Also Published As

Publication number Publication date
CN116756103A (zh) 2023-09-15

Similar Documents

Publication Publication Date Title
CN116756103B (zh) 基于使用行的宏定义文本展开方法、电子设备和介质
US7714864B2 (en) Visual resource profiler for graphical applications
CN109086215B (zh) 一种嵌入式软件单元测试用例生成方法及系统
JP2007293383A (ja) プログラム開発支援装置及びプログラム開発支援装置の動作方法
WO2008038389A1 (fr) Appareil d'analyse de performance de programme
CN111124379B (zh) 页面生成方法、装置、电子设备及存储介质
CN106777036B (zh) 一种数据渲染方法及数据渲染系统
Koch et al. Patterns for the Model-based Development of RIAs
CN117111951B (zh) 基于使用链的宏文本展开方法、电子设备和介质
CN111124481A (zh) 网页应用程序的安装包生成方法、装置、存储介质及设备
US6519768B1 (en) Instruction translation method
CN115599437A (zh) 一种软件版本的处理方法、装置、电子设备及存储介质
CN116776787B (zh) 信号别名的自动识别方法、电子设备和介质
CN117111950B (zh) 基于常量宏定义的宏文本展开方法、电子设备和介质
GB2389685A (en) Accessing resources in a microprocessor having resources of varying scope, thus allowing design software to simulate multithread and multicoremicroprocessors.
JP2009075965A (ja) ソフトウェア開発方法及びソフトウェア開発装置
CN117112730B (zh) 基于宏展开文本的目标文本搜索方法、电子设备和介质
CN112860248B (zh) 源代码生成方法及装置
US6385763B1 (en) Methodology for mapping use cases to operations for operational profile development
US20140173572A1 (en) Constraint derivation in context following for use with object code insertion
CN114518875A (zh) 一种图形化编程系统及其编程方法
CN107341002B (zh) 一种内存访问方法
JP2006139357A (ja) 仕様書データ生成方法及び装置
CN118012763A (zh) 逐层展开宏文本的方法、电子设备和介质
JP7502216B2 (ja) プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム

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