ISO C/POSIX宣布像这样的函数time()
:
time_t time(time_t *tloc);
文档说:
time() 函数应返回自纪元以来的时间值(以秒为单位)。
tloc 参数指向也存储返回值的区域。如果 tloc 是空指针,则不存储任何值。
我不明白为什么人们从一开始就以既有返回值又有“输出”参数的方式设计 API。这样的设计是否有充分的理由,或者是历史上演变而来的?
过去是否有一个time()
函数只有 out 参数 ( void time(time_t *)
),但它被更改为time_t
返回值,并保留第一个参数以实现向后兼容性?
或者,是否存在返回值的大小受到限制而无法容纳 的系统time_t
,因此需要一个指针?
答案1
long
因此,正如 MC68020 在评论中所说,C当时没有类型,我能找到的最古老的出现在库/时间.s第二版 Unix,该文件的日期为 1972-06-07,位于上面链接的网站上,来源如下(PDP-11 程序集):
/ C library -- time
/ tvec = time(tvec);
/
/ tvec[0], tvec[1] contain the time
.globl _time
.data
_time:
1f
.text
1:
mov 2(sp),r0
sys time
mov ac,(r0)
mov mq,2(r0)
rts pc
有趣的是,它似乎总是有返回值 ( tvec = time(tvec);
),假设tvec
是某种 16 位值的 2 分量数组(如果该赋值有任何相关性的话)。