【发布时间】:2016-07-13 15:11:49
【问题描述】:
我的代码很简单,看起来很简单
#include <cstdint>
#include <windows.h>
#define ADDR_cabalbase 0x01083A90
#define ADDR_ONat 0x35c
#define ZeroOFS 0x0
int main()
{
if ((*reinterpret_cast<PDWORD *>(ADDR_cabalbase)+*reinterpret_cast<PDWORD *>(ZeroOFS))
+ *reinterpret_cast<PDWORD *>(ADDR_ONat)
== 3){
ExitProcess(0);
}
}
但它给出了一个错误:
Error 1 error C2110: '+' : cannot add two pointers
谁能告诉我我做错了什么。我只想用C++重写一个Delphi函数
procedure TWanda.Timer5Timer(Sender: TObject);
begin
try
if PDWORD(PDWORD(PWORD(cabalbase)^+$0)^+ONat)^ = 3 then
begin
timer9.Enabled:= true;
end;
except {ignore errors} end;
end;
【问题讨论】:
-
你不能添加指向指针的指针,这没有任何意义,不清楚该代码在delphi中做了什么
-
指针包含地址在内存中的位置,就像信封包含邮政地址一样。添加邮政地址没有意义,就像添加指针没有意义一样。您可以向指针添加 偏移量。
-
请不要在您的问题中放置代码图片。只需将代码粘贴为文本即可。
-
ADDR_ONat和ZeroOFS看起来是偏移量。只需将它们添加到指针中,不要对它们使用 *reinterpret_cast() 。我会计算地址并将其放在 if () 之前的 PDWORD 变量中。 -
@drescherjm 你是对的,我发布了正确的代码,谢谢