stdio fonksiyonlardan bazıları, örneğin son argüman olarak akışı var gibi:stdio'daki bazı işlevler akışı son argüman olarak neden yapıyor?
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);
bazı ilk argüman olarak varken:
int fgetpos(FILE *restrict, fpos_t *restrict);
int fseek(FILE *, long, int);
Neden bu tutarsızlık mı? Bu fonksiyonlar standart kütüphanenin gelişiminde farklı zamanlarda mı eklendi? İlk olarak hangi durumda ve neden kongre değişti?
Ben fazla veya daha az olması arkadaşlarıyla fprintf
için gerekli olduğunun farkına FILE*
ilk (ya da en azından erken) nedeniyle üç nokta için (ve fclose
ve benzeri için önce onu var ve son kadar).
C kütüphanesi kendi API'si hakkında kesinlikle hiçbir şey tutarlı kuralda son derece tutarlıdır. –
Başka bir örnek, sırayla argümanlara sahip olan fandrittir: boyut, sayı, calloc, qsort, bsearch ise bu argümanları tersine çevirir. – 2501
En azından, konumsal yöntemlerin ilk parametreyi dosya tanıtıcısı olarak beklerken, arabelleğin i/o yöntemleri arabelleği önce beklediği konusunda tutarlılık gösterirler. –