操纵LARGE_INTEGERS

Mic*_*ick 14 c++ int64

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

错误C2676:二进制' - ':'LARGE_INTEGER'没有定义此运算符或转换为预定义运算符可接受的类型

我试图将变量转换为__int64,但后来得到:

错误C2440:'type cast':无法从'LARGE_INTEGER'转换为'__int64'

我该如何解决这个问题?

谢谢,

Jor*_*ira 28

LARGE_INTEGER是64位整数和一对32位整数的并集.如果要在其中执行64位算术运算,则需要从联合内部选择64位int.

LARGE_INTEGER a = { 0 };
LARGE_INTEGER b = { 0 };

__int64 c = a.QuadPart - b.QuadPart;
Run Code Online (Sandbox Code Playgroud)


Isa*_*aac 8

这里是:

LARGE_INTEGER x,y;
///
//Some codes...
///

__int64 diff = x.QuadPart - y.QuadPart
Run Code Online (Sandbox Code Playgroud)

因为QuadPart定义为LONGLONG,与__int64相同.


Cat*_*lus 6

LARGE_INTEGER是一个工会,记录在这里.你可能想要一个QuadPart会员.