Below, ``a'' is declared enclosed in parentheses. They are redundant, nevertheless the declaration is valid. Still, splint is left clueless.
int *f( void )
{
int *(a[2][3]) = {{0}};
return a[1][1];
}
splint redef.c
Splint 3.1.1.2 --- 27 May 2007
redef.c: (in function f)
redef.c:5:26: Variable a used before definition
An rvalue is used that may not be initialized to a value on some execution path. (Use -usedef to inhibit warning)
redef.c:5:21: Initializer block used for a[0] where int is expected: { 0 }
Types are incompatible. (Use -type to inhibit warning)
redef.c:7:10: Array fetch from non-array (int): a[1][1]
Finished checking --- 3 code warnings