Почему объявления помещаются между func () и {}? - PullRequest
2 голосов
/ 30 марта 2011

В источнике sed я часто видел

func(...)
int b;
char c;

{
...
}

Зачем помещать туда переменные? Это меняет сферу?

Как здесь: http://www.mirrors.docunext.com/lxr/http/source/src/bin/sed/lib/regex_internal.c?v=haiku

re_string_allocate (pstr, str, len, init_len, trans, icase, dfa)
 51      re_string_t *pstr;
 52      const char *str;
 53      int len, init_len, icase;
 54      RE_TRANSLATE_TYPE trans;
 55      const re_dfa_t *dfa;
 56 {
 57   reg_errcode_t ret;
 58   int init_buf_len;
 59 

Ответы [ 3 ]

3 голосов
/ 30 марта 2011

Это просто старый (K & R) способ объявления параметров в C.

/* Old way of declaring parameters*/
void myFunc(a, b)
  int a; int b;
{
    ...
}

Никто больше так не делает, если только вам не нужно скомпилировать код на действительно старом компиляторе - так что либо sed был написан с учетом старых компиляторов, либо этот код действительно старый.

3 голосов
/ 30 марта 2011

Это стиль K & R (старый), он работает, но ..

2 голосов
/ 30 марта 2011

Это просто старый стиль, до ANSI C. Понятие объявлений функций с параметрами типа не было введено до позднего времени!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...