使用__int64参数调用GetSystemTimeAsFileTime

时间:2014-01-12 18:52:56

标签: c++

我的问题是学术问题。如果我尝试使用快捷方式并使用GetSystemTimeAsFileTime()使用__int64 param直接使用FILETIME fileTimeUTC; __int64 timeUTC_64; __int64 timeUTC_64Test; GetSystemTimeAsFileTime(&fileTimeUTC); memcpy(&timeUTC_64, &fileTimeUTC, sizeof(__int64 )); GetSystemTimeAsFileTime((FILETIME*)&timeUTC_64Test); ATLASSERT(sizeof(__int64) == sizeof(FILETIME)); // okay ATLASSERT(timeUTC_64 == timeUTC_64Test); // FAILS ! ,有人可以告诉我为什么会更改几个最小的sig位吗?

{{1}}

1 个答案:

答案 0 :(得分:5)

您会看到低阶位的一个小差异,因为系统时间在两次调用之间会有一小部分(可能是几微秒的数量级)。获得当前系统时间需要非常少的时间。

另外,作为FILETIME structure笔记的文档,您应该 FILETIME个实例中进行任何投射:

  

不要将FILETIME结构的指针强加到ULARGE_INTEGER*__int64*值,因为它可能会导致64位Windows上的对齐错误。

只需使用FILETIME实例并手动将其转换为64位值,如果您需要对其进行数学运算,以避免64位窗口出现对齐错误。