关于类型严格匹配的问题
请问有没有能够检查代码中类型匹配问题的工具?
例:
void func1(long *l);
....
func2()
{
int i;
func2((long *)&i);
}
我想找一个工具,能够搜索到代码中有类型不匹配的地方,尤其是函数传参时有指针类型时更要严格匹配。我的硬件目标平台是arm, arm c编译器在为变量分配内存时并不是按照4byte对齐的,比如long型分配的是4byte,而int分配的是2byte不会占用4byte的空间,在上例中int型指针被强制转为long型指针后,该指针就会指向一个4byte的空间,这样就可能会造成内存覆盖,引起程序崩溃。而上述用法在以4byte对齐分配内存的系统上是可以的,即虽然你声明的是一个char型,但仍然要占用4byte空间。
其实这个问题改起来很简单,但查找很累人,代码量较大(大概10万行吧),所以我想找个工具,不知有没有,请大家帮助,谢谢!