0

次のコードはエラーを生成します:

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;
}

私のせいはどこですか?

よろしくお願いします。

4

1 に答える 1

5

lp__int64は、実際のではなく、へのポインタ__int64です。表現

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

同じ行の後半で同じポインタから減算しているという事実は言うまでもなく、整数を整数へのポインタに割り当てようとします。

*が指す値を取得するには、演算子を使用してポインタを逆参照する必要がありますlp

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

おそらく、C ++/Cのポインターについても読む必要があります。

于 2013-01-29T18:16:50.243 に答える