能力值:
( LV12,RANK:240 )
|
-
-
2 楼
static_cast<BYTE*>(pMemory2) = static_cast<BYTE*>(pMemory2) + 0x3c; //这样也会出错
error C2106: '=' : left operand must be l-value
|
能力值:
( LV12,RANK:240 )
|
-
-
3 楼
BYTE* pp;
pp = static_cast<BYTE*>(pMemory) + 0x3c;
pMemory = (LPVOID)pp;
这样写的话编译通过 (通过一个中间变量)
哪位知道更好的方法 或者 知道上楼为什么错 请赐教 谢谢
|
能力值:
(RANK:570 )
|
-
-
4 楼
调试一下,看看编译器是怎么编译你的代码,你便知道出错的原因了。
因为你使用的是别人的编译器,所以你只能遵守别人的规则。按照别人的语法来做。
一些想法,你不曾做过的,内联汇编来实现吧
这也是我总是学不会C语言的原因,写出来的代码,根本不知道编译器是否按照我想的去编译成汇编代码。
|
能力值:
( LV12,RANK:240 )
|
-
-
5 楼
这是编译通不过 不是执行的时候出问题 跟本没有链接成可执行文件
我还没有那能力调试VC++编译器 这只是语法问题 我搞不懂为什么写成一句错 而加了中间变量就对了
|
能力值:
(RANK:570 )
|
-
-
6 楼
把自己想成是C++的开发者,而不是C++的使用者
或者你就会明白为什么不允许这种修改了
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
p = (LPVOID)ULongToPtr(PtrToUlong(p) + 0x3C);
PtrToUlong,ULongToPtr是宏
#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
#define ULongToPtr( ul ) ((VOID *)(ULONG_PTR)((unsigned long)ul))
|
|
|