当_USE_32BIT_TIME_T设置为预处理器的一部分时,localtime在visual studio 2015中返回null

时间:2017-05-16 04:40:46

标签: c++ visual-studio-2015 max localtime

我们有一个遗留项目,我们需要获得支持的最长纪元时间,这是通过以下代码片段实现的:

#include "stdafx.h"
#include <stdio.h>      /* puts, printf */
#include <time.h>       /* time_t, struct tm, time, localtime */

#define LONG_MAX      2147483647L // maximum (signed) long value
int main()
{
    struct tm * timeinfo;
    long elapsedTime = LONG_MAX;
    time_t temp = elapsedTime;
    timeinfo = localtime(&temp);
    printf("Current local time and date: %s", asctime(timeinfo));
    getchar();
    return 0;
}

好处是它曾经工作直到visual studio 2015迁移。 迁移后,localtime()返回null。 仅当我们传递预处理器参数 _USE_32BIT_TIME_T 时才会发生这种情况。 没有它,它返回正确的最大值03:14:07,2038年1月19日,UTC。

由于2015年使用_USE_32BIT_TIME_T预处理器,是否存在任何已知问题。

0 个答案:

没有答案