On Tue, 7 Oct 2014, Artem Chuprina wrote:
y> В С нет разницы между void f(struct S a[]) и void f(struct S *a) y> - компилятору это всё равно. y> Моё беспокойство было, как будет обрабатываться a[i] или, что то же y> самое *(a+i). Как компилятор предотвратит использование такой y> конструкции? Я полагаю, скажет "incomplete type" и обломает компиляцию.
Мы говорим об одном и том же. По стандарту языка С incomplete type == types that describe objects but lack information needed to determine their sizes Тогда похоже, что между указателями на incomplete type и void* вообще нет никакой разницы. Тем более что и преобразования типа void* <-> struct* будут выполнятся молча, даже без предупреждений. Просто это «сахар» для писателя/читателя программы. Можно было бы и typedef обойтись. Ю.