Прототип функции
void foo(int n, int a[][]);
дает ошибку об неполном типе, а
void foo(int n, int (*a)[]);
компилирует. В соответствии с правилом распада int a[][]
в этом случае эквивалентно int (*a)[]
, и поэтому int (*a)[]
также должен давать ошибку об неполном типе, но GCC, похоже, его принимает. Есть что-то, чего я не вижу?
Это может быть ошибка GCC, но я не нашел ничего связанного с ней.