重复: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
的定义。 pkt
和message
参数都是结构;他们各自的成员声明高于他们的第一次使用,朝向.c文件的开头:
packet
这种初始化是某种C语法,我不熟悉或只是一个错字?我环顾四周但却找不到这样的东西,也没有用其他任何语言看过这样的东西,分开一个像这样的函数代码。无论我做什么,编译器都在为无效的函数原型设计而尖叫,所以看起来有些不对......
答案 0 :(得分:0)
这是非常旧代码,从20世纪80年代标准化之前开始。
A_output(message)
struct msg message;
{
}
是函数定义,message
是参数。这就是“古代”中论证的定义。注意缺少的返回类型,它意味着该函数返回int
。
以上定义等同于以下内容:
int A_output(struct msg message)
{
}