我有这段代码:
HRESULT __stdcall IDirect3DDevice9Hook::BeginScene()
{
if(dwD3D9DllBaseAddr && dwD3D9DllSize)
{
dwD3DDev = (DWORD)pD3DDevice;
_asm mov eax, dwD3DDev
_asm mov ebx, [eax]
_asm mov eax, [ebx+164]
_asm mov dwTestPtr, eax
if(dwTestPtr < dwD3D9DllBaseAddr || dwTestPtr > (dwD3D9DllBaseAddr + dwD3D9DllSize)) {
FORCE_EXIT( 10 );
}
}
return pD3DDevice->BeginScene();
}
在第5行,它说“此声明没有存储类或类型说明符”,它在FORCE_EXIT(10)中说明了这一点;太。在第二个if语句中(if(dwTestPtr ....),它表示“预期声明”。它们有什么问题?
答案 0 :(得分:0)
使用C或C ++等语言的“问题”是语法并不总是唯一的。如果你看第五行,你可能会看到一个任务。但是,如果变量dwD3DDev不存在,编译器实际上可能会看到带有初始值设定项的声明,除非此声明未指定类型。
因此,错误消息并不总是“正确”,因为它们不是基于您想要做的事情;相反,它们基于编译器的某些内部状态,当它注意到“嘿,这里的东西不太合适”。这两者可能并不总是一致。
因此,您必须声明变量---在代码的其他地方(如果它们应该是全局变量或实例变量),或者像编译器所说的那样并添加类型。