Это старые объявления параметров функций в стиле 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;
}
Объявления "нового стиля" в основном повсеместно предпочтительны.
Это так называемый "старый" вариант объявления аргументов функции. В старые добрые времена нельзя было просто писать типы аргументов внутри круглых скобок, а нужно было определять их для каждого аргумента сразу после закрывающей круглой скобки.
Другими словами, это эквивалентно ripper_pos( VALUE self )
Да, он использует более старый стиль определения функции, в котором параметры без типа перечислены в круглых скобках, за которыми следует объявление этих переменных с их типами перед открывающая скобка тела функции. Итак, self
имеет тип VALUE
.
Это старый 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'.
Это действительно старый код на Си, где сначала указываются имена аргументов, а затем их типы. Смотрите, например, здесь.