Каков этот странный функциональный синтаксис определения в C? [дубликат]

34
задан Tom Dalling 10 June 2010 в 16:10
поделиться

6 ответов

Это старые объявления параметров функций в стиле K&R, в которых типы параметров объявляются отдельно:

int func(a, b, c)
   int a;
   int b;
   int c;
{
  return a + b + c;
}

Это то же самое, что и более современный способ объявления параметров функций:

int func(int a, int b, int c)
{
  return a + b + c;
}

Объявления "нового стиля" в основном повсеместно предпочтительны.

36
ответ дан 27 November 2019 в 16:53
поделиться

Это так называемый "старый" вариант объявления аргументов функции. В старые добрые времена нельзя было просто писать типы аргументов внутри круглых скобок, а нужно было определять их для каждого аргумента сразу после закрывающей круглой скобки.

Другими словами, это эквивалентно ripper_pos( VALUE self )

9
ответ дан 27 November 2019 в 16:53
поделиться

Да, он использует более старый стиль определения функции, в котором параметры без типа перечислены в круглых скобках, за которыми следует объявление этих переменных с их типами перед открывающая скобка тела функции. Итак, self имеет тип VALUE .

4
ответ дан 27 November 2019 в 16:53
поделиться

Это старый c. K&R C использовал это соглашение до принудительных типизированных параметров ANSI C.

static VALUE  // A static function that returns 'VALUE' type.
ripper_pos(self)  // Function 'ripper_pos' takes a parameter named 'self'.
    VALUE self;   // The 'self' parameter is of type 'VALUE'.
3
ответ дан 27 November 2019 в 16:53
поделиться

Это действительно старый код на Си, где сначала указываются имена аргументов, а затем их типы. Смотрите, например, здесь.

2
ответ дан 27 November 2019 в 16:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: