UNIX time(2) 系统调用time_t time(time_t *t);
以两种方式返回当前时间:返回值和按引用返回。这种冗余的原因是什么?为什么不直接定义呢time_t time(void);
?
问问题
467 次
1 回答
1
古老的历史,但它可能与一个 long 由两个 16 位int
值串联模拟的时间有关。否则,没有真正明显的原因。有趣的是,UNIX™ 第 7 版手册文档time
已过时:
姓名
time, ftime – 获取日期和时间
概要
long time(0)
long time(tloc)
long *tloc;
#include <sys/types.h>
#include <sys/timeb.h>
ftime(tp)
struct timeb *tp;
描述
Time 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的时间,以秒为单位。如果tloc 为非空,则返回值也存储在tloc指向的位置。ftime 条目填充其参数指向的结构,定义如下
<sys/timeb.h>
:/* * Structure returned by ftime system call */ struct timeb { time_t time; unsigned short millitm; short timezone; short dstflag; };
该结构包含自纪元以来的时间(以秒为单位)、最多 1000 毫秒的更精确间隔、本地时区(以格林威治向西的时间分钟数衡量)和一个标志,如果非零,则表明夏令时在本地应用在一年中的适当部分。
也可以看看
日期(1),时间(2),时间(3)
汇编器
(ftime = 35.) sys ftime; bufptr (time = 13.; obsolete call) sys time (time since 1970 in r0-r1)
请注意名称“过时调用”,并注意返回值在两个(16 位)寄存器中,r0和r1。
于 2013-03-12T03:46:50.773 回答