1285_把AUTOSAR函数以及变量等定义的宏用脚本展开以提高可读性

网友投稿 1157 2022-11-21

1285_把AUTOSAR函数以及变量等定义的宏用脚本展开以提高可读性

1285_把AUTOSAR函数以及变量等定义的宏用脚本展开以提高可读性

全部学习汇总: ​​Insight写代码也会用Source Insight看代码。但是很遗憾的是,很多时候这样的解析会把Source Insight难住。而且,有时候面对这样的一些定义信息有时候我们的脑子得去不断做翻译,毕竟跟直接了当的代码表达方式有一点不同。

我在做代码调试的时候有时候也会因为这部分糊涂,我做的一个简单的处理是直接把这部分简化一下保证其语义不变。而且,改完之后可以通过编译对比一下hex是否发生了变化。自然,我们希望我们修改后的呈现形式不会导致代码的语义发生变化,也就是hex不变。

类似的展开其实也容易,我们只需要做一个正则表达式的匹配处理就能够实现语义的表达。

#!/usr/bin/perl -w

use File::Find;

find(\&process_c_code_file, '.');

sub process_c_code_file

{

if(/\.c$|\.h$/)

{

if($_ ne "Compiler.h")

{

open(CODE, "<$_");

my @code = ​​;​​

close CODE;

my $code = join '',@code;

$code =~ s/CONSTP2FUNC\((\w+)\s*,\s*\w+\)/$1 (* const )/g;

$code =~ s/P2FUNC\((\w+)\s*,\s*\w+\)/$1 (*fctname)/g;

$code =~ s/FUNC\((\w+)\s*,\s*\w+\)/$1/g;

$code =~ s/CONSTP2VAR\((\w+)\s*,\s*\w+,\s*\w+\)/$1 * const/g;

$code =~ s/CONSTP2CONST\((\w+)\s*,\s*\w+,\s*\w+\)/const $1 * const/g;

$code =~ s/P2CONST\((\w+)\s*,\s*\w+,\s*\w+\)/const $1 */g;

$code =~ s/P2VAR\((\w+)\s*,\s*\w+,\s*\w+\)/$1 */g;

open(CODE, ">$_");

print CODE "$code";

close CODE;

}

}

}

上面是我用perl实现的一个简单的小脚本,具体的脚本源文件可以从前文中的github链接中找到。针对上面的定义,这个脚本可以做一定的处理。

不过,需要注意不同版本的AUTOSAR这种编译器的抽象表达可能有差异。因此,正则表达式的处理可能得去注意一下,做一点相应的修改调整。

使用的时候,在代码根目录放这个脚本,cmd中执行perl autosar2common.pl即可。

以上是修改的效果,应该有一定的可读性的改善。

简单随手写的,考虑可能不周到,如果有bug欢迎大家发布修复版本!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:YOLOv5.5 调用本地摄像头
下一篇:mysql 的 in 不一定不走索引
相关文章

 发表评论

暂时没有评论,来抢沙发吧~