V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DinoStray
V2EX  ›  程序员

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

  •  
  •   DinoStray · 2021-02-06 14:01:24 +08:00 · 4086 次点击
    这是一个创建于 1378 天前的主题,其中的信息可能已经有所发展或是发生改变。
    21 条回复    2021-02-07 15:55:14 +08:00
    mcoo1997
        1
    mcoo1997  
       2021-02-06 14:07:47 +08:00 via Android
    尽量不要过到 2023 年
    pursuer
        2
    pursuer  
       2021-02-06 14:10:33 +08:00
    是 2038 年 1 月吧
    ho121
        3
    ho121  
       2021-02-06 14:13:26 +08:00 via Android
    大部分系统应该切换到 64 位了吧
    DinoStray
        4
    DinoStray  
    OP
       2021-02-06 14:18:15 +08:00
    @pursuer 对, 我打错了
    whenov
        5
    whenov  
       2021-02-06 14:19:03 +08:00 via iPhone
    使用 time_t 的话已经与具体实现解耦了,只要及时更新操作系统和编译器应该不会有大问题
    Jirajine
        6
    Jirajine  
       2021-02-06 14:20:20 +08:00 via Android
    到那个时候估计现在的主流操作系统都更新换代了。
    elfive
        7
    elfive  
       2021-02-06 14:21:13 +08:00 via iPhone
    基本上除了少数用到了类似于 printf 函数(主要是%d,%ld 这些),以及一些强制转字节流等操作的以外(可能涉及到序列化存取),几乎都只需要重新用 64 位编译器编译一下就能解决……
    mepwang
        8
    mepwang  
       2021-02-06 14:22:02 +08:00 via iPhone
    @ho121 切 64 位不影响已有系统吧,并且一般 64 位 c 语言只有 long long 整数和指针,还有明确指定是 64 位的数据类型,是 64 位的
    BrettD
        9
    BrettD  
       2021-02-06 14:42:20 +08:00 via iPhone
    @ho121 问题在于虽然系统是 64 位,为了兼容旧程序,time_t 还是 32 位整数
    ho121
        10
    ho121  
       2021-02-06 14:47:14 +08:00 via Android
    @BrettD 记得 64 位编译出来的 sizeof time_t 是 8
    wty
        11
    wty  
       2021-02-06 14:51:23 +08:00 via Android
    c 库已经换成 64 位了,写 time_t 默认 64 位。time 函数什么的都会被重新定义到 64 位版本上去。新编译的程序应该大多没啥问题
    learningman
        12
    learningman  
       2021-02-06 18:42:57 +08:00
    time_t 本来就是个宏,重新指定到 int_64 呗
    nightwitch
        13
    nightwitch  
       2021-02-06 21:14:24 +08:00
    systemcall
        14
    systemcall  
       2021-02-06 21:20:47 +08:00   ❤️ 1
    得看谭浩强和廖雪峰打不打算拯救众生
    BrettD
        15
    BrettD  
       2021-02-06 23:17:35 +08:00
    @ho121 哦好吧我记忆过时了,我记得几年前看到帖子说为了维持 ABI 兼容性导致 time_t 仍然 32 位。
    alazysun
        16
    alazysun  
       2021-02-06 23:49:13 +08:00
    那时候 32 位也应该取缔了把
    fiveelementgid
        17
    fiveelementgid  
       2021-02-07 00:27:38 +08:00 via Android
    32 位已经退役了吧
    jzmws
        18
    jzmws  
       2021-02-07 08:59:48 +08:00
    这个和 MySQL timestamp 是一样的把?
    laucenmi
        19
    laucenmi  
       2021-02-07 09:18:50 +08:00
    还有好多设备是 32 位的...
    shuax
        20
    shuax  
       2021-02-07 10:29:59 +08:00
    typedef __time64_t time_t;
    iawes
        21
    iawes  
       2021-02-07 15:55:14 +08:00
    之前毁灭地球就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:53 · PVG 05:53 · LAX 13:53 · JFK 16:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.