什么是 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 位模拟?的主要内容,如果未能解决你的问题,请参考以下文章

用Radare2模拟shellcode运行

Python 模拟32bit 浮点数运算

stm32 普通IO口模拟串口通信

华为H3C模拟器5.0 报错误

stm32的ADC功能。读取的是模拟量么?转化为数字量输出?

STM32 软件复位并模拟USB拔插