结构定义的奇怪位置?

时间:2017-04-16 08:46:53

标签: c syntax

重复Alternative (K&R) C syntax for function declaration versus prototypes

我有一些我需要做的功课(在C中),在这个作业中,我们给了一些方法存根。我在C中表现不是很好,但当我看到存根时,这引起了我的注意:

$lexer = new \Twig_Lexer($twig,array(
                         'tag_block'    =>array('{','}'),
                         'tag_variable' =>array('{{','}}')
));

即,函数的名称/参数和定义之间的... A_output(message) struct msg message; { } A_input(packet) struct pkt packet; { } ... msg 的定义。 pktmessage参数都是结构;他们各自的成员声明高于他们的第一次使用,朝向.c文件的开头:

packet

这种初始化是某种C语法,我不熟悉或只是一个错字?我环顾四周但却找不到这样的东西,也没有用其他任何语言看过这样的东西,分开一个像这样的函数代码。无论我做什么,编译器都在为无效的函数原型设计而尖叫,所以看起来有些不对......

1 个答案:

答案 0 :(得分:0)

这是非常旧代码,从20世纪80年代标准化之前开始。

A_output(message)
  struct msg message;
{

}

是函数定义,message是参数。这就是“古代”中论证的定义。注意缺少的返回类型,它意味着该函数返回int

以上定义等同于以下内容:

int A_output(struct msg message)
{

}