Не понимаю конструкций (Разъясните пож. использование некоторых конструкций.)

Модератор: Модераторы разделов

Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Не понимаю конструкций

Сообщение fatboy »

В одной довольно старой книге по Unix (The Unix programming environment - 1983) нашел примеры небольших программок на С. В них есть некоторые непонятные мне моменты, может кто разъяснит:

Код: Выделить всё

FILE *fp, *efopen()

Ниже определяется функция FILE *efopen(char *name, char *mode). Так вот что означает FILE *efopen()?

А еще видел в исходниках ядра такую вещь:

Код: Выделить всё

do{ ... }while(0);

Зачем здесь do while ?
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

Re: Не понимаю конструкций

Сообщение Asgard »

так вот что означает FILE *efopen()?

насколько я понимаю, это просто устаревший стиль программирования. Если вы заметили, там ещё по-иному обозначаются переменные, передаваемые функции:

Код: Выделить всё

FILE* efopen(file, mode)
   char *file, *mode;
{
/*...*/
}

Зачем здесь do while ?

Здесь уже был подобный топик, причём сравнительно недавно(правда ничего определённого там сказано так и не было)
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
JaGoTerr
Сообщения: 380

Re: Не понимаю конструкций

Сообщение JaGoTerr »

fatboy писал(а):
01.10.2005 10:56
А еще видел в исходниках ядра такую вещь:

Код: Выделить всё

do{ ... }while(0);

Зачем здесь do while ?

Смотря что внутри. Возможно такое:

Код: Выделить всё

do {
  ...
  if (a>b) {
    break;
  }
  ...
} while (0);

Таким образом избегается использование goto.
Спасибо сказали:
MedVed
Сообщения: 112

Re: Не понимаю конструкций

Сообщение MedVed »


Зачем здесь do while ?


Здесь уже был подобный топик, причём сравнительно недавно(правда ничего определённого там сказано так и не было)

Почему не было?
Вот этот топик. Уважаемый darktiger все хорошо разъяснил.
МСВС 3.0/Linux Mandrake 8.0
Спасибо сказали: