以下代码产生错误:

error C2296: '*' : illegal, left operand has type '__int64 *'|


错误行(
DWORD increasefactor = 1;

__int64 initialtime64 = 0;
__int64 initialoffset64 = 0;

...

BOOL WINAPI QueryPerformanceCounter_Detour(__int64 *lp)
{
    BOOL ret = QueryPerformanceCounter_Trampoline(lp);
    lp = ((lp-initialtime64)*increasefactor)+initialoffset64;   // <------
    return ret;
}


我的错在哪里

非常感谢。

最佳答案

lp是指向__int64的指针,而不是实际的__int64。表达方式

lp = ((lp-initialtime64)*increasefactor)+initialoffset64;


尝试将整数分配给指向整数的指针,更不用说您稍后将在同一行中从同一指针中减去该事实。

您需要使用*运算符取消引用指针,以获取lp指向的值。

*lp = ((*lp-initialtime64)*increasefactor)+initialoffset64;


您可能还应该阅读C ++ / C中的指针。

关于c++ - 错误C2296:“*”:非法,左操作数的类型为“__int64 *” |,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14589397/

10-11 23:49