-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)でこれを言っています。それも。2 番目の if ステートメント (if(dwTestPtr....) では、「宣言が必要です」と表示されます。何が問題なのですか?

4

1 に答える 1

0

C や C++ などの言語の「問題」は、構文が常に一意であるとは限らないことです。5 行目を見ると、おそらく課題が表示されています。ただし、変数 dwD3DDev が存在しない場合、コンパイラは、この宣言が型を指定していないことを除いて、初期化子を含む宣言を実際に見る可能性があります。

そのため、エラー メッセージは意図した内容に基づいていないため、常に「正しい」とは限りません。代わりに、「ねえ、何かがおかしい」と気づいたときのコンパイラの内部状態に基づいています。この 2 つは常に一致するとは限りません。

したがって、変数を宣言する必要があります --- コードの他の場所 (グローバル変数またはインスタンス変数であると想定されている場合)、またはコンパイラの指示に従って型を追加する必要があります。

于 2012-07-14T12:05:06.387 に答える