我有一个相当大的C代码库,其中每隔一段时间就使用int而不是time_t.有什么好主意来处理这件事吗.我应该在整个标准库中搜索返回time_t或将其作为参数的函数,还是有更聪明的方法?
据我所知,time_t在64位系统上将是64位,至少在我的系统上是64位.int在64位系统上只有32位.这意味着如果将这样的int用作time_t,则将在2038年用完.
我有一个相当大的C代码库,其中每隔一段时间就使用int而不是time_t.有什么好主意来处理这件事吗.我应该在整个标准库中搜索返回time_t或将其作为参数的函数,还是有更聪明的方法?
据我所知,time_t在64位系统上将是64位,至少在我的系统上是64位.int在64位系统上只有32位.这意味着如果将这样的int用作time_t,则将在2038年用完.
假设你使用的是gcc或clang,如果你使用-Wconversion
标志进行编译,它会警告你从一个较大的类型转换为一个较小的类型.
#include <stdio.h>
#include <time.h>
int main()
{
time_t t = time(NULL);
int i = t;
printf("i=%d, t=%ld\n", i, t);
return 0;
}
[dbush@db-centos7 ~]$ gcc -g -Wall -Wextra -Wconversion -o x1 x1.c
x1.c: In function ‘main’:
x1.c:7:5: warning: conversion to ‘int’ from ‘time_t’ may alter its value [-Wconversion]
int i = t;
^