我在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)
这里是:
LARGE_INTEGER x,y;
///
//Some codes...
///
__int64 diff = x.QuadPart - y.QuadPart
Run Code Online (Sandbox Code Playgroud)
因为QuadPart定义为LONGLONG,与__int64相同.