【问题标题】:C function with parameter types declared after parameters? [duplicate]具有在参数之后声明的参数类型的C函数? [复制]
【发布时间】:2011-11-16 16:32:20
【问题描述】:

可能重复:
Declaring function parameters after function name
C function syntax, parameter types declared after parameter list

我对 C 语言还很陌生,我在纠结时间,遇到了以下函数。我可以通过将指针传递给它来让它工作。我真的不明白这里发生了什么。第三行是做什么的,第二行又如何合法?

int 
timeval_subtract (result, x, y)
     struct timeval *result, *x, *y;
{
  ... (function code here)
}

【问题讨论】:

    标签: c


    【解决方案1】:

    这是用于函数声明的非常古老的 C 语法。不建议使用。

    http://msdn.microsoft.com/en-us/library/efx873ys.aspx

    【讨论】:

      【解决方案2】:

      这看起来很古老的 C,比如 K&R C 之类的……我不认为那是合法的 ANSI C。

      【讨论】:

        【解决方案3】:

        看起来像是一些旧的 C 代码。 (Kernighan & Ritchie,根据其他答案。)

        这定义了参数的顺序:

        timeval_subtract (result, x, y)
        

        这定义了它们的类型:

         struct timeval *result, *x, *y;
        

        同理:

        int timeval_subtract (struct timeval *result,
                              struct timeval *x,
                              struct timeval *y)
        {
            // ...
        }
        

        (那些structs 在 C++ 和最新版本的 C、IIRC 中是多余的。)

        【讨论】:

          猜你喜欢
          • 2010-12-07
          • 1970-01-01
          • 1970-01-01
          • 2012-02-16
          • 1970-01-01
          • 2020-10-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多