2023 年, 操作系统的 time_t 类型 就溢出了, 目前有对此做什么么?

2021-02-06 14:01:24 +08:00
 DinoStray
3981 次点击
所在节点    程序员
21 条回复
mcoo1997
2021-02-06 14:07:47 +08:00
尽量不要过到 2023 年
pursuer
2021-02-06 14:10:33 +08:00
是 2038 年 1 月吧
ho121
2021-02-06 14:13:26 +08:00
大部分系统应该切换到 64 位了吧
DinoStray
2021-02-06 14:18:15 +08:00
@pursuer 对, 我打错了
whenov
2021-02-06 14:19:03 +08:00
使用 time_t 的话已经与具体实现解耦了,只要及时更新操作系统和编译器应该不会有大问题
Jirajine
2021-02-06 14:20:20 +08:00
到那个时候估计现在的主流操作系统都更新换代了。
elfive
2021-02-06 14:21:13 +08:00
基本上除了少数用到了类似于 printf 函数(主要是%d,%ld 这些),以及一些强制转字节流等操作的以外(可能涉及到序列化存取),几乎都只需要重新用 64 位编译器编译一下就能解决……
mepwang
2021-02-06 14:22:02 +08:00
@ho121 切 64 位不影响已有系统吧,并且一般 64 位 c 语言只有 long long 整数和指针,还有明确指定是 64 位的数据类型,是 64 位的
BrettD
2021-02-06 14:42:20 +08:00
@ho121 问题在于虽然系统是 64 位,为了兼容旧程序,time_t 还是 32 位整数
ho121
2021-02-06 14:47:14 +08:00
@BrettD 记得 64 位编译出来的 sizeof time_t 是 8
wty
2021-02-06 14:51:23 +08:00
c 库已经换成 64 位了,写 time_t 默认 64 位。time 函数什么的都会被重新定义到 64 位版本上去。新编译的程序应该大多没啥问题
learningman
2021-02-06 18:42:57 +08:00
time_t 本来就是个宏,重新指定到 int_64 呗
nightwitch
2021-02-06 21:14:24 +08:00
systemcall
2021-02-06 21:20:47 +08:00
得看谭浩强和廖雪峰打不打算拯救众生
BrettD
2021-02-06 23:17:35 +08:00
@ho121 哦好吧我记忆过时了,我记得几年前看到帖子说为了维持 ABI 兼容性导致 time_t 仍然 32 位。
alazysun
2021-02-06 23:49:13 +08:00
那时候 32 位也应该取缔了把
fiveelementgid
2021-02-07 00:27:38 +08:00
32 位已经退役了吧
jzmws
2021-02-07 08:59:48 +08:00
这个和 MySQL timestamp 是一样的把?
laucenmi
2021-02-07 09:18:50 +08:00
还有好多设备是 32 位的...
shuax
2021-02-07 10:29:59 +08:00
typedef __time64_t time_t;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/751814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX