[email protected] -> [email protected] @ Tue, 7 Oct 2014 15:45:51 +0400 (MSK):
>> y> В этом случае нельзя передавать массивы: >> >> y> void f(struct S a[]) == void f(struct S* a) >> >> y> так как sizeof(struct S) может поменяться. >> y> Даже без обращения к полям. >> >> Да, но из этого всего лишь следует, что API библиотеки не будет >> содержать void f(struct S a[]). >> >> Поскольку, не имея определения S, ты не сможешь в своей программе >> самостоятельно создать оный массив, то оно тебе и не надо. >> >> Надо сказать, что мне в моей довольно богатой программистской практике >> ни разу не пришлось воспользоваться функцией с аргументом типа массив... >> >> y> Это не возражение. Это уточнение. >> y> Размер грабель неопределен. >> >> Последней фразы я не понял. >> y> В С нет разницы между void f(struct S a[]) и void f(struct S *a) y> - компилятору это всё равно. y> Моё беспокойство было, как будет обрабатываться a[i] или, что то же y> самое *(a+i). Как компилятор предотвратит использование такой y> конструкции? Я полагаю, скажет "incomplete type" и обломает компиляцию. -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: https://lists.debian.org/[email protected]

