在同一函数中"this declaration ahs no type specifier"和"expected a declaration"错误

"this declaration ahs no type specifier" and "expected a declaration" errors in same function

本文关键字:declaration specifier type expected 错误 no ahs 函数 this      更新时间:2023-10-16

我有这个代码:

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….)中,它表示"预期一个声明"。他们有什么毛病?

像C或C++这样的语言的"问题"在于语法并不总是唯一的。如果你看第五行,你可能看到了一个作业。但是,如果变量dwD3DDev不存在,编译器实际上可能会看到一个带有初始值设定项的声明,除非该声明没有指定类型。

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

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