当参数被定义为比原型指定的更小的数组时,是否有任何工具(最好在 linux 上)可以发出警告?
例如:
void somefunc(float arg[10]); /* normally this would be defined in a header */
void my_func(void)
{
float arg[2];
somefunc(arg); /* <-- this could be a warning */
}
我意识到这不是无效代码,但如果可以发出警告,它可以解决一些常见错误(最近遇到了这些错误之一)。
一些工具(例如,clang 静态检查器)会警告函数是否在同一个文件中并在数组边界之外设置一个值,但我想知道如果 arg 小于原型本身,是否会有任何警告。
我使用过 cppcheck、clang、smatch、splint、gcc 的 -Wextra ......但没有人抱怨这一点。