Некоторые из функций в stdio, кажется, имеют поток в качестве последнего аргумента, например:
char *fgets(char *restrict, int, FILE *restrict);
int fputs(const char *restrict, FILE *restrict);
size_t fread(void *restrict, size_t, size_t, FILE *restrict);
size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict);
а некоторые - как первый аргумент:
int fgetpos(FILE *restrict, fpos_t *restrict);
int fseek(FILE *, long, int);
Почему это несоответствие? Были ли эти функции добавлены в разное время в развитие стандартной библиотеки? В этом случае, которые были первыми, и почему было изменено соглашение?
Я понимаю, что для fprintf
для друзей fprintf
требуется более FILE*
сначала FILE*
(или, по крайней мере, раньше) из-за многоточия (и для fclose
и аналогично иметь его первым и последним),