首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操纵LARGE_INTEGERS

操纵LARGE_INTEGERS
EN

Stack Overflow用户
提问于 2009-09-08 17:54:07
回答 6查看 48.7K关注 0票数 14

我正在win32下的MS dev studio中将一些代码从C转换为C++。在旧代码中,我使用QueryPerformanceCounter()进行了一些高速计时,并对获得的__int64值进行了一些操作,特别是减号和除号。但现在在C++下,我被迫使用LARGE_INTEGER,因为这是QueryPerformanceCounter()返回的内容。但是现在,在我尝试对这些值做一些简单的数学运算的代码行上,我得到了一个错误:

错误C2676: binary '-‘:'LARGE_INTEGER’未定义此运算符或转换为预定义运算符可接受的类型

我尝试将变量强制转换为__int64,但随后得到:

错误类型:‘C2440 cast’:无法从'LARGE_INTEGER‘转换为'__int64’

我该如何解决这个问题?

谢谢,

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-08 18:00:16

LARGE_INTEGER是一个64位整数和一对32位整数的并集。如果您想在一个上执行64位算术,则需要从union内部选择64位int。

代码语言:javascript
复制
LARGE_INTEGER a = { 0 };
LARGE_INTEGER b = { 0 };

__int64 c = a.QuadPart - b.QuadPart;
票数 30
EN

Stack Overflow用户

发布于 2009-09-08 17:58:19

LARGE_INTEGER是个联盟,documented here您可能需要一个QuadPart成员。

票数 10
EN

Stack Overflow用户

发布于 2009-09-08 18:04:40

这就是它:

代码语言:javascript
复制
LARGE_INTEGER x,y;
///
//Some codes...
///

__int64 diff = x.QuadPart - y.QuadPart

由于QuadPart被定义为LONGLONG,因此与__int64相同。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1395361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档