C 函数体和头之间声明的变量

C 函数体和头之间声明的变量,c,C,在阅读MINIX的源代码时,我遇到了以下问题: int do_read_write(rw_flag) int rw_flag; /* READING or WRITING */ { 看起来中间的一行是用来声明函数的rw_标志输入的类型,但我以前从未见过这种表示法。它与下面的有什么不同吗 int do_read_write(int rw_flag) { 如果没有,除了扩展代码以便可以对其进行更多注释之外,它还有什么用途吗?这是一种非常古老的C风格的声明,从

在阅读MINIX的源代码时,我遇到了以下问题:

int do_read_write(rw_flag)
int rw_flag;                    /* READING or WRITING */
{
看起来中间的一行是用来声明函数的
rw_标志
输入的类型,但我以前从未见过这种表示法。它与下面的有什么不同吗

int do_read_write(int rw_flag) {

如果没有,除了扩展代码以便可以对其进行更多注释之外,它还有什么用途吗?

这是一种非常古老的C风格的声明,从第一年(1980年代)开始。是的,意思是一样的


您不应该再使用它了,大多数编译器不再支持它,并且出于某种原因放弃了它。

这是一种声明参数的有效方法,称为声明列表(ISO/IEC 9899:TC3,6.9.1,1)

6.9.1功能定义

语法

功能定义:

声明说明符声明器声明listopt复合语句

申报表:

声明

申报表申报

…但它将变得无效(ISO/IEC 9899:TC3,6.11.7)

6.11未来语言方向

[……]

6.11.7功能定义

使用带有单独参数标识符和声明列表的函数定义(不是原型格式参数类型和标识符声明器)是一种过时的特性


AFAIK它是过时的K&R样式。它不是声明的变量,而是指定的参数类型。