Bo tak nie działa składnia C. Deklaracje parametrów różnią się od deklaracji zmiennych na kilka sposobów, np.
void fun(int i, double x);
vs.
int i, double x; // syntax error
Podczas składnia mógł zostać przedłużony, aby umożliwić formularz próbował (co jest dopuszczalne przez, na przykład, idź z jego func fun(i, j, k int)
, średnia komisja postanowiła nie to zrobić , przypuszczalnie dlatego, że byłoby to kłopotliwe w obliczu starego stylu ("K & R", pre-1989) składnia parametr, który nadal był wspierany w ANSI/ISO C89 C90 dla kompatybilności wstecznej.
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)
{
}
Ze względu na specyfikację języka. – sehe
Z powodu prehistorycznego zachowania się C bez prototypów oraz decyzji projektowej dokonanej przez C++, aby nie pozwolić na sugerowaną składnię. Ponadto, biorąc pod uwagę bieżącą definicję funkcji 'void f1 (int i1, int i2, double d1, double d2)', jak byś napisał to w swojej wariacyjnej składni? 'void f1 (int i1, i2; double d1, d2)'? A może użyjesz przecinka, w którym umieściłem średnik? Albo coś innego? –
Pierwszy wiersz deklaruje * trzy * zmienne, a drugi tylko jeden. Poprawną analogią byłoby coś takiego jak 'int a = 1, * b = & a, foo (char, char);' –