形参与实参均为数组时,数组大小应一致
10.6.10 ID_inconsistentArraySize
被声明为数组的形式参数等同于指针,对传入的实际参数起不到限制作用,为了避免潜在的问题,当实际参数也是数组时,应要求实际参数与形式参数具有相同的元素个数。
示例:
int foo(int a[10]);
int bar() {
int a[5] = {0};
return foo(a); // Non-compliant
}
例中 foo 函数的形式参数被声明为具有 10 个元素的数组,而实际传入的数组只有 5 个参数,但这种代码可以通过编译。
在 C++ 代码中建议使用 std::array 等容器代替 C 数组,可参见 ID_forbidCArray 的进一步讨论。
相关
依据
ISO/IEC 9899:1999 6.7.5.3(7)
ISO/IEC 9899:2011 6.7.6.3(7)
ISO/IEC 14882:2003 13.1(3)
ISO/IEC 14882:2011 13.1(3)
参考
MISRA C 2012 17.5