Re: Чёртов язык Си!
Dmitrii Kashin -> debian-russian@lists.debian.org @ Tue, 07 Oct 2014 10:23:55 +0400:
>> DK> Оказывается, можно объявлять структуры, не объявляя их поля. Я в
>> DK> шоке. Оказывается, заголовки можно писать вот так:
>>
>> DK> ---------- my-objects.h ----------
>> >> struct my_object;
>> >> struct my_object * my_object_create();
>> >> int my_object_do_something(struct my_object * object);
>> DK> ----------------------------------
>>
>> ...
>> DK> [1] http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Defining-Structures
>>
>> Это довольно логично, поскольку в приведенном примере структура не
>> _определяется_. Она _объявляется_.
>>
>> http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Incomplete-Types
DK> Спасибо, Артём. Не дочитал, поторопился. =(
DK> Кстати, здесь что-то непонятное с терминологией: "You can *define*
DK> structures, unions, and enumerations without listing their members"
DK> Я ведь правильно понимаю, что "define" - это "определять", а "объявлять" -
DK> это "declare"? Или переводить такие слова надо как-то аккуратнее?
Да, у них там недоработка.
Но вообще надо понимать, что нет такого языка "GNU C", поэтому
gnu-c-manual не может быть руководством по языку :)
Обсуждаемая особенность была в языке C с самого начала, ее можно еще у
Кернигана и Ричи вычитать. Хотя в наше время по Кернигану и Ричи учить
C уже не очень хорошо, уж очень там много давно снятых ограничений.
Reply to: