9

我不明白为什么 fputs 和 fprintf 反向流顺序。

int fputs (const char * str, FILE * stream);
int fprintf (FILE * stream, const char * format, ...);
ssize_t write(int fd, const void *buf, size_t count);

我知道 fprintf 将流放在前面以支持可变参数,但是为什么 fputs 系列不保持一致性???

4

1 回答 1

6

因为这些东西是几十年前写的,所以通常只是历史学家感兴趣的问题:-)

可能只是一个设计决定(或缺乏决定)导致他们成为这种方式,并且由于 ISO 重视向后兼容性,他们从未改变过它。

可能是先puts写的,到了写fputs的时候,开发人员简单地剪切'n'粘贴它,将新参数粘贴到最后。即使 存在相同的情况printf/fprintf,由于需要将变量参数列表放在末尾,这也是不可能的。

但是,抛开假设不谈,既然我们心爱的丹尼斯走了,我们可能永远不会知道真正的原因。

于 2015-01-15T03:29:27.420 回答