我正在win32下的MS dev studio中将一些代码从C转换为C++。在旧代码中,我使用QueryPerformanceCounter()进行了一些高速计时,并对获得的__int64值进行了一些操作,特别是减号和除号。但现在在C++下,我被迫使用LARGE_INTEGER,因为这是QueryPerformanceCounter()返回的内容。但是现在,在我尝试对这些值做一些简单的数学运算的代码行上,我得到了一个错误:
错误C2676: binary '-‘:'LARGE_INTEGER’未定义此运算符或转换为预定义运算符可接受的类型
我尝试将变量强制转换为__int64,但随后得到:
错误类型:‘C2440 cast’:无法从'LARGE_INTEGER‘转换为'__int64’
我该如何解决这个问题?
谢谢,
发布于 2009-09-08 18:00:16
LARGE_INTEGER是一个64位整数和一对32位整数的并集。如果您想在一个上执行64位算术,则需要从union内部选择64位int。
LARGE_INTEGER a = { 0 };
LARGE_INTEGER b = { 0 };
__int64 c = a.QuadPart - b.QuadPart;发布于 2009-09-08 17:58:19
LARGE_INTEGER是个联盟,documented here您可能需要一个QuadPart成员。
发布于 2009-09-08 18:04:40
这就是它:
LARGE_INTEGER x,y;
///
//Some codes...
///
__int64 diff = x.QuadPart - y.QuadPart由于QuadPart被定义为LONGLONG,因此与__int64相同。
https://stackoverflow.com/questions/1395361
复制相似问题