'_wctime32':无法将参数1从'const time_t *'转换为'const __time32_t *'

时间:2013-10-21 11:53:17

标签: c++ visual-studio-2010

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

1 个答案:

答案 0 :(得分:8)

我认为你有this problem

  在Visual C ++ 2005之前的

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