请教VC有关内联ASM代码时,宏定义与变量的不同之处?
为什么以下代码运行时会出错?void FB_Send(paramdata2 lparam)
{
DWORD lp1=lparam.param1;
DWORD lp2=DWORD(&lparam.param2);
DWORD gBaseB=0x9AE880;
DWORD fbCallBaseB=0x5A6F80;
char cstr[8],cstr1[8];
_try
{
_asm
{
pushad
mov ecx,dword ptr ds:[gBaseB]
push lp1
push lp2
MOV ECX,DWORD PTR DS:[ECX+0x20]
mov eax,fbCallBaseB
call eax
popad
}
}
_except(1)
{
AfxMessageBox("FB_SEND ERROR",0,0);
}
}
而把其中两句:
DWORD gBaseB=0x9AE880;
DWORD fbCallBaseB=0x5A6F80;
去掉后,改成在函数外面增加宏定义
#define gBaseB 0x9AE980
#define fbCallBaseB 0x5A6F80
后,就可以正常运行了!请问这是为什么啊?有办法可以弄成变量的形式也可以运行吗?