我见过这样几个函数的定义,而最近与GNU野牛玩:C中这个奇怪的函数定义语法是什么?
static VALUE
ripper_pos(self)
VALUE self;
{
//code here
}
为什么self
外的括号的类型?这个有效的C吗?
我见过这样几个函数的定义,而最近与GNU野牛玩:C中这个奇怪的函数定义语法是什么?
static VALUE
ripper_pos(self)
VALUE self;
{
//code here
}
为什么self
外的括号的类型?这个有效的C吗?
这些都是老K & [R风格函数参数声明,声明参数类型的分别:
int func(a, b, c)
int a;
int b;
int c;
{
return a + b + c;
}
这是一样的更现代的方式来声明函数参数:
“新风格”声明基本上普遍受欢迎。
如果您省略了任何参数的类型定义,则该参数将被假定为int。另外,如果你省略了返回类型,它将被假定为int。例如:func(a,b,c){return a + b + c; } – Ferruccio 2010-06-10 16:23:12
只是FWIW,K&R风格仍然有时用于编码高尔夫球...... – 2010-06-10 16:29:03
是,它使用了其中的参数,SANS类型,括号中列出函数定义的旧风格,其次是这些变量与他们的函数体的开括号之前类型的声明。所以self
的类型是VALUE
。
这是声明函数参数的所谓“旧”变体。在过去的日子里,你不能只在圆括号内写出参数类型,但是你必须在右括号之后为每个参数定义它。
换句话说,就相当于ripper_pos(VALUE self)
这是一个非常古老的C代码,您首先指定参数名称,然后指定它们的类型。参见例如here。
这是旧 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'.
请参阅[此C语法有什么用处?](http://stackoverflow.com/questions/1630631/what-is-useful-about-this-c-syntax)。 – 2010-06-10 16:16:06