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 "、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 に答える