加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么stdio中的某些功能将流作为最后一个参数?

发布时间:2020-12-16 06:04:13 所属栏目:百科 来源:网络整理
导读:stdio中的一些功能似乎将流作为最后一个参数,例如: char *fgets(char *restrict,int,FILE *restrict);int fputs(const char *restrict,FILE *restrict);size_t fread(void *restrict,size_t,FILE *restrict);size_t fwrite(const void *restrict,FILE *rest
stdio中的一些功能似乎将流作为最后一个参数,例如:
char    *fgets(char *restrict,int,FILE *restrict);
int      fputs(const char *restrict,FILE *restrict);
size_t   fread(void *restrict,size_t,FILE *restrict);
size_t   fwrite(const void *restrict,FILE *restrict);

而有些则将它作为第一个参数:

int      fgetpos(FILE *restrict,fpos_t *restrict);
int      fseek(FILE *,long,int);

为什么这不一致?这些功能是否在标准库的演进过程中不同时候添加?在这种情况下,这是第一次,为什么大会改变了?

我知道,fprintf与朋友一样或多或少地需要FILE *首先(或至少是早期的)由于省略号(和fclose和类似的,首先,最后).

解决方法

我相信这个问题不会有明确而明确的答案,虽然这个问题不是以舆论为基础的,因为一个明确的答案存在于某个地方,即使是无法达成的.

但是,我认识到这个问题的沮丧:一个人不能轻易地工作,除了学习函数名称和依赖什么外,还要分别记住每个函数的参数顺序.相反,这将是一个很好的一个参数顺序.

为了实现这一点,可以实现一个一致的stdio库,它将为参数使用一致的顺序,并将每个stdio函数包装成这样一个函数.例:

int      mystdio_fseek(long,FILE *);

这将返回结果

int      fseek(FILE *,int);

所以,mystdio_可能是一个前缀,以确保名称几乎相似,但不同,参数顺序将是一致的.这样一来,只需要记住函数名称,每个函数依赖什么,不再需要单独记住每个函数的参数顺序.只要不需要微型优化,就可以使用这些方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读