错误 C2296:'*':非法的左操作数类型为"__int64 *"|

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

本文关键字:int64 类型 C2296 非法 错误 操作数      更新时间:2023-10-16

以下代码生成错误:

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 中的指针。