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

时间:2016-11-17 19:10:14

标签: c

在阅读MINIX的源代码时,我发现了以下内容:

int do_read_write(rw_flag)
int rw_flag;                    /* READING or WRITING */
{

看起来中间行用于声明函数的rw_flag输入的类型,但我以前从未见过这种表示法。它与以下有何不同?

int do_read_write(int rw_flag) {

如果没有,它是否可以用于任何目的,除了扩展代码以便可以更多地评论它?

2 个答案:

答案 0 :(得分:5)

从最初几年(1980年代?)开始,这是一种非常古老的C式宣言。是的,这意味着同样的事情。

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

答案 1 :(得分:1)

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

  

6.9.1功能定义

     

<强>语法

     

函数的定义

     

declaration-specifiers 声明者 声明列表 opt 复合声明

     

声明列表

     

声明

     

声明列表 声明

......但它将无效(ISO / IEC 9899:TC3,6.11.7)

  

6.11未来的语言指示

     

[...]

     

6.11.7功能定义

     

使用具有单独参数标识符和声明列表(不是prototype-format参数类型和标识符声明符)的函数定义是一个过时的功能。