The purpose of
int foo(int x[static 10])
is not to produce a warning - that's just a nice possible side-effect (and only in some cases).The real purpose is to allow the compiler to optimise the compilation of the foo() function itself, under the assumption that x will always point to the first element of an array of at least 10 elements.