C函数与参数后声明的参数类型?

时间:2011-09-14 04:04:01

标签: c

  

可能重复:
  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)
}

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分: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)
{
    // ...
}

(那些struct在C ++中是多余的,而最新版本的C,IIRC。)

答案 2 :(得分:0)

看起来很古老的C,就像K& R C之类的东西......我认为这不是合法的ANSI C.