什么是 CTime(有没有)32 位模拟?
Posted
技术标签:
【中文标题】什么是 CTime(有没有)32 位模拟?【英文标题】:What is CTime (Is there any) 32bit analog? 【发布时间】:2011-12-14 05:31:08 【问题描述】:我发现<time.h>
中有 ctime 和 _ctime_32,但 ctime 也不是 CTime。是否有 CTime 32 位模拟?或者可能是类似 32 位 CTime 和 __time32_t 的东西。我在使用 64 位版本时遇到了兼容性问题。
好吧,也许我根本不需要 CTime,我正在接收 __time32_t 并使用它来提供变体时间:
SYSTEMTIME st;
CTime tmp = pCurPar[pot->numSubsection].SysTime;
tmp.GetAsSystemTime( st );
SystemTimeToVariantTime(&st,&pot->Value.date);
但我认为
CTime tmp = pCurPar[pot->numSubsection].SysTime;
转换不正确,因为我的 .SysTime 是 __time32_t 而 CTime 使用的是 64 位版本。
即使我遇到了一种情况,我需要将其作为 time32_t 提供,但使用 pot->Value.intVal = DayRec[pot->numSubsection].startTime.GetTime();
我收到了警告 Warning 3 warning C4244: '=' : conversion from '__time64_t' to 'INT', possible loss of data
【问题讨论】:
你的“烦恼”究竟是什么? 【参考方案1】:我只有Visual Studio Express,无法测试,但是编译器不应该自动将32位类型转换为64位类型吗?反过来做会导致精度下降的警告,但 32 位到 64 位的转换应该不成问题。测试一下,如果不行就回来。
【讨论】:
所以是的,你是对的。但是我有一种情况需要以 __time32_t 格式提供。 @nCdy 您可以向__time32_t
添加显式转换以消除警告,但我建议您还添加一条评论,说明您为什么要进行转换。也许还有一张说明说它在 2038 年 1 月 18 日之后将无法使用。:)以上是关于什么是 CTime(有没有)32 位模拟?的主要内容,如果未能解决你的问题,请参考以下文章