“这个声明啊没有类型说明符”和“预期声明”错误在同一个函数中

时间:2012-07-14 09:06:45

标签: c++ hook direct3d direct3d9

我有这段代码:

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 ....),它表示“预期声明”。它们有什么问题?

1 个答案:

答案 0 :(得分:0)

使用C或C ++等语言的“问题”是语法并不总是唯一的。如果你看第五行,你可能会看到一个任务。但是,如果变量dwD3DDev不存在,编译器实际上可能会看到带有初始值设定项的声明,除非此声明未指定类型。

因此,错误消息并不总是“正确”,因为它们不是基于您想要做的事情;相反,它们基于编译器的某些内部状态,当它注意到“嘿,这里的东西不太合适”。这两者可能并不总是一致。

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