Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
stdio中的某些函数似乎将流作为最后一个参数,例如:
有些人将其作为第一个参数:
为什么会有这种不一致?在标准库的发展过程中,是否在不同时间添加了这些功能?在那种情况下,哪个是第一个?为什么更改了约定?
我意识到,由于省略号,与 friend 一起
这将返回的结果
因此,
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
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);
为什么会有这种不一致?在标准库的发展过程中,是否在不同时间添加了这些功能?在那种情况下,哪个是第一个?为什么更改了约定?
我意识到,由于省略号,与 friend 一起
fprintf
或多或少需要首先(或至少尽早)使用FILE*
(而对于fclose
和类似名称,首先和最后使用它)。 最佳答案
我坚信,尽管这个问题是无法达成的,但由于某个地方存在明确的答案,尽管这个问题不是基于观点的,但仍无法找到一个明确而明确的答案。
但是,我认识到对此问题的无奈:如果除了学习函数名称及其所依赖的功能之外,还要分别记住每个函数的参数顺序,那将是一件不容易的事。相反,最好具有一致的参数顺序。
为此,可以实现一个一致的stdio库,该库将对参数使用一致的顺序,并将每个stdio函数包装到这样的函数中。例子:
int mystdio_fseek(long, int, FILE *);
这将返回的结果
int fseek(FILE *, long, int);
因此,
mystdio_
可能是前缀,以确保名称几乎相似,但名称不同且参数顺序保持一致。这样,将只需要记住函数名称,每个函数所依赖的函数,就不再需要分别记住每个函数的参数顺序。只要不需要微优化,就可以使用这些方法。