несколько раз я вижу, что функции определяются как указано ниже:
read_dir(dir)
char *dir;
{
DIR * dirp;
struct dirent *d;
/* open directory */
dirp = opendir(dir);
......... so on
здесь, какова важность оператора
char *dir;
каково содержание позади объявления указателя вскоре после имени функции и затем запуска тела функции.
Это старый синтаксис языка C, называемый "K&R C", поскольку именно в таком виде он появился в оригинальной версии легендарной книги.
То, что раньше писалось так:
foo(a, b)
int a;
int b;
{
}
теперь
int foo(int a, int b)
{
}
Это просто "старый стиль", определение функции K&R C (см. книгу Кернигана и Ричи , обычно называется просто Kernighan & Ritchie .)
Код, на который вы ссылаетесь, мог быть написан в конце восьмидесятых или начале девяностых годов с учетом переносимости (т. е. совместимости со старыми компиляторами, возможно, более «экзотических») платформы) в виду.
Даже после публикации стандарта C 1989 года, в течение многих лет K&R C все еще считался «наименьшим общим знаменателем», которым программисты на C ограничивались, когда требовалась максимальная переносимость, поскольку многие старые компиляторы все еще использовались, и потому что тщательно написанный код K&R C также может быть законным стандартом C.
Некоторые люди могут полагать , что определение функции в стиле K&R, все еще поддерживаемое компиляторами, более читабельно, что на самом деле не обязательно верно; сравните:
some_function(param1,param2,param3)
char *param1; /* param1 comment */
int param2; /* param2 comment */
short param3; /* param3 comment */
{
}
с
/* notice also that return type is explicitly specified now */
int
some_function(
char *param1, /* param1 comment */
int param2, /* param2 comment */
short param3 /* param3 comment */
)
{
}
Определения функций в стиле K&R устарели с 1989 года ; см. раздел 6.9.5 «Определения функций» в стандарте C90.