【问题标题】:passing function parameters without type, then declare pointers to variables with same names [duplicate]传递没有类型的函数参数,然后声明指向具有相同名称的变量的指针[重复]
【发布时间】:2013-07-11 12:51:23
【问题描述】:

我正在阅读GNU C library - Date-time - Data & Functions 并遇到了这个函数定义:

int timeval_subtract (result, x, y)
 struct timeval *result, *x, *y;
{
    //do stuff
    return result;
}

我以前从未遇到过这种说法。 - 括号 () 内的变量没有类型。 -OK 类型“struct timeval”稍后出现,但使用相同的变量名?

上面是否完全等价于

int struct_timeval(struct timeval *result, struct timeval *x, struct timeval *y){

    //do stuff
}

还是不行?

【问题讨论】:

  • 这是旧式的K&R风格。SO上有很多此类问题的重复。请参考谷歌。

标签: c parameters


【解决方案1】:

这是旧式的函数声明。它在声明中使用标识符列表。

这种声明不等同于函数原型。使用原型,函数参数被转换为参数的类型,就好像通过赋值但没有原型默认参数提升发生。

【讨论】:

  • 我不确定我是否理解。 “论据提升”?
  • @nass 在一般情况下,它意味着类型比int窄的参数(如charshort,...)被转换为intfloat转换为double
猜你喜欢
  • 1970-01-01
  • 2017-03-26
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 2012-06-17
  • 2015-09-15
  • 1970-01-01
相关资源
最近更新 更多