Определение функции C

Возможный дубликат:
Синтаксис функции C, типы параметров, объявленные после списка параметров

Я видел следующий синтаксис для определения функции в " Программе программистов

int compare(s1, s2)
    char * s1, *s2;
{
    while (*s1++ == *s2) {
        if (*s2++ == 0) return (0);
    }
    return (*--s1 - *s2);
}

Как указано выше определение? Он компилируется и работает без ошибок.

Мне удобнее следующий синтаксис определения функции

int compare(char * s1,char *s2)
{
    while (*s1++ == *s2) {
        if (*s2++ == 0) return (0);
    }
    return (*--s1 - *s2);
}

и нет, где я видел то, что было дано в книге (изучая C в моем колледже или в другом месте), кто-нибудь может пролить свет на то, что указано в книге.

Ответ 1

Ранее этот вопрос обсуждался , это "стиль Kernighan и Ritchie" определения функции.

В настоящее время вы должны предпочесть второй синтаксис, первый из которых по-прежнему принимается некоторыми компиляторами для соображений обратной совместимости, но он должен считаться устаревшим для всех практических целей.

Ответ 2

Это синтаксис pre-ANSI, иногда называемый K & R C. Это был оригинальный синтаксис языка C.