【问题标题】:Variable declared between function body and header [duplicate]在函数体和头之间声明的变量[重复]
【发布时间】:2017-04-01 11:32:30
【问题描述】:

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

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

看起来中间行是用来声明函数的rw_flag输入的类型,但我以前从未见过这种表示法。和下面有什么不同吗?

int do_read_write(int rw_flag) {

如果不是,除了扩展代码以便更多注释之外,它是否有其他用途?

【问题讨论】:

标签: c


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    6.9.1 函数定义

    语法

    函数定义

        declaration-specifiers declarator declaration-listopt compound-statement

     声明列表

       声明

       声明列表 声明

    …但它会失效(ISO/IEC 9899:TC3, 6.11.7)

    6.11 未来的语言方向

    […]

    6.11.7 函数定义

    使用具有单独参数标识符和声明列表(不是原型格式的参数类型和标识符声明符)的函数定义已过时。

    【讨论】:

      猜你喜欢
      • 2018-11-10
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2010-11-12
      • 1970-01-01
      • 2012-07-30
      相关资源
      最近更新 更多