数组大小应被显式声明
6.4.6 ID_missingArraySize
显式声明数组大小有利于提高可读性。
示例:
extern int a[]; // Non-compliant
extern int b[10]; // Compliant
由初始化列表定义数组大小是一种惯用方式,但列表较为复杂时不便于读出数组大小,如:
int a[] = {
1, 2, 3, .... // Many items, let it go?
};
审计工具不妨通过配置决定这种方式是否合规。
例外:
void foo(int a[], int n); // Let it go
数组参数可不受本规则限制。
配置
allowNoArraySizeWithInitList: 是否放过带有初始化列表的数组
参考
MISRA C 2004 8.12
MISRA C 2012 8.11
MISRA C++ 2008 3-1-3
SEI CERT ARR02-C