6

如果我们可以像这样声明多个变量:

int i, j, k;

那么为什么我在写正式参数时会出错:

void fun(int i, j, k)

代替:

void fun(int i, int j, int k) 
4

1 回答 1

15

因为这不是 C 语法的工作方式。参数声明在几个方面不同于变量声明,例如

void fun(int i, double x);

对比

int i, double x;            // syntax error

虽然可以扩展语法以允许您尝试使用的形式(例如,Go with its 允许的形式func fun(i, j, k int),但标准委员会决定不这样做,大概是因为面对旧式(“K&R ", pre-1989) 参数语法,为了向后兼容,ANSI C89/ISO C90 仍支持该语法。

void fun(i, j)  // K&R syntax: implicitly int i, int j
{
}

void fun(i, p)
    int *p;     // int i implicit!
{
}

// What's this? double i? double *i? Mixed K&R/ANSI syntax with implicit int i?
void fun(double *x, i)
{
}
于 2013-07-21T10:24:08.963 回答