uniapp开发app框架在提升开发效率中的独特优势与应用探索
1223
2022-11-21
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~