-1

我有这个代码:

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....) 上,它说“需要一个声明”。它们有什么问题?

4

1 回答 1

0

C 或 C++ 等语言的“问题”是语法并不总是唯一的。如果您查看第五行,您可能会看到一个作业。但是,如果变量 dwD3DDev 不存在,编译器实际上可能会看到一个带有初始化程序的声明,除了这个声明没有指定类型。

因此,错误消息并不总是“正确”的,因为它们不是基于您打算做的;相反,它们基于编译器的某些内部状态,当它注意到“嘿,这里不太对劲”时。两者可能并不总是一致的。

因此,您必须在代码的其他地方声明变量(如果它们应该是全局变量或实例变量),或者按照编译器的说明添加类型。

于 2012-07-14T12:05:06.387 回答