0

VS 2010 Ultimate,我出现了一些错误 C2664,

我已经根据网上找到的信息进行了尝试-添加#include-更改常规属性“使用多字节字符集”但没有成功。

你有什么想法?

c:\program files (x86)\microsoft visual studio 10.0\vc\include\time.inl(36): error C2664: '_ctime32' : cannot convert parameter 1 from 'const time_t *' to 'const __time32_t *'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\program files (x86)\microsoft visual studio 10.0\vc\include\time.inl(42): error C2664: 'errno_t _ctime32_s(char *,size_t,const __time32_t *)' : cannot convert parameter 3 from 'const time_t *' to 'const __time32_t *'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\program files (x86)\microsoft visual studio 10.0\vc\include\time.inl(49): error C2664: '_gmtime32' : cannot convert parameter 1 from 'const time_t *' to 'const __time32_t *'
          Types pointed to are unrelated; conversion requires reinterpret_cast, 

它指向 MS VS 的 time.inl

_CRT_INSECURE_DEPRECATE(ctime_s) static __inline char * __CRTDECL ctime(const time_t * _Time)
{
#pragma warning( push )
#pragma warning( disable : 4996 )
    return _ctime32(_Time);
#pragma warning( pop )
}
#if __STDC_WANT_SECURE_LIB__
static __inline errno_t __CRTDECL ctime_s(char *_Buffer, size_t _SizeInBytes, const time_t * _Time)
{
    return _ctime32_s(_Buffer, _SizeInBytes, _Time);
}
#endif
4

1 回答 1

8

我认为你有这个问题

在 Visual C++ 2005 之前的 Visual C++ 和 Microsoft C/C++ 版本中,time_t 是一个 long int(32 位),因此不能用于 UTC 2038 年 1 月 19 日 3:14:07 之后的日期。time_t 现在默认等效于 __time64_t,但定义_USE_32BIT_TIME_T 会将 time_t 更改为 __time32_t 并强制许多时间函数调用采用 32 位 time_t 的版本。有关详细信息,请参阅文档中有关各个时间函数的标准类型和注释。

于 2013-10-21T12:01:07.497 回答