LINUX.ORG.RU

История изменений

Исправление baka-kun, (текущая версия) :

Или не так?

Не так. Декларации функций как в C++ стандартизированы в ANSI C, до этого были только расширением в некоторых свежих C/C++ компиляторах. В K&R также не было прототипов функций, типы аргументов выяснялись по первому использованию, поэтому в декларации могли отсутствовать (int) или быть по ошибке не теми. Вот не компилируемый пример:

main (c, v)
int c;
char *v[];
{
    int i;

    i = fun(c, v);
    return 0;
}

fun (a, b)
{
    return 1;
}

Чтобы избежать этого и не компилировать мусор, придумали lint, например.

Исходная версия baka-kun, :

Или не так?

Не так. Декларации функций как в C++ стандартизированы в ANSI C, до этого были только расширением в некоторых свежих C/C++ компиляторах. В K&R также не было прототипов функций, например, типы аргументов выяснялись по первому использованию, поэтому в декларации могли отсутствовать. Вот не компилируемый пример:

main (c, v)
int c;
char *v[];
{
    int i;

    i = fun(c, v);
    return 0;
}

fun (a, b)
{
    return 1;
}

Чтобы избежать этого придумали lint