为了账号安全,请及时绑定邮箱和手机立即绑定

C语言中奇怪的函数定义语法是什么?

C语言中奇怪的函数定义语法是什么?

C
慕田峪9158850 2019-12-04 09:56:55
最近,在使用GNU Bison时,我已经看到一些类似的函数定义:static VALUEripper_pos(self)    VALUE self;{    //code here}self括号外的类型为何?这是有效的C吗?
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

这些是旧的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;

}

基本上,“新样式”声明是普遍首选的。


查看完整回答
反对 回复 2019-12-04
?
千万里不及你

TA贡献1784条经验 获得超9个赞

这是声明函数参数的所谓“旧”变体。在过去,不能只在括号内编写参数类型,而必须在右括号后为每个参数定义参数类型。

换句话说,它相当于 ripper_pos( VALUE self )


查看完整回答
反对 回复 2019-12-04
?
慕斯709654

TA贡献1840条经验 获得超5个赞

这是老 c。在ANSI C强制键入参数之前,K&R 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'.


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 617 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信