结构体在函数名/参数之后、括号之前声明。有人能解释一下这个C语法吗?

Pin*_*ton 5 c struct function function-definition

这是代码:

A_output(message) 
 struct msg message;
{

}
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这样的语法。该结构定义在做什么?这只是在参数字段中指定“消息”的“类型”的另一种方式吗?那么,它是一样的吗?:

A_output(struct msg message) 
{

}
Run Code Online (Sandbox Code Playgroud)

Vla*_*cow 4

A_output(message) 
 struct msg message;
{

}
Run Code Online (Sandbox Code Playgroud)

是函数定义的旧语法,现在不允许使用,因为函数没有声明返回类型。早期默认返回类型是int.

至于这样的函数定义

void A_output(message) 
 struct msg message;
{

}
Run Code Online (Sandbox Code Playgroud)

那么它就是一个带有标识符列表的有效函数定义。

来自 C 标准(6.9.1 函数定义)

6 如果声明符包括标识符列表,则声明列表中的每个声明应至少有一个声明符,这些声明符应仅声明标识符列表中的标识符,并且应声明标识符列表中的每个标识符。声明为 typedef 名称的标识符不得重新声明为参数。声明列表中的声明不应包含除寄存器之外的任何存储类说明符并且不包含初始化。