错误C2146:语法错误:缺少';' 在标识符'顶点'之前

num*_*l25 6 c++ directx

我经常会搜索这个错误.但是在VS C++ Express中,这个错误几乎可以解决你所犯的每一个错误.我如何在下面收到此错误

error C2146: syntax error : missing ';' before identifier 'vertices'
Run Code Online (Sandbox Code Playgroud)

每次我在我的文档顶部添加以下代码

// Create vertex buffer
SimpleVertex vertices[] =
{
    D3DXVECTOR3( 0.0f, 0.5f, 0.5f ),
    D3DXVECTOR3( 0.5f, -0.5f, 0.5f ),
    D3DXVECTOR3( -0.5f, -0.5f, 0.5f ),
};
Run Code Online (Sandbox Code Playgroud)

下面是完整的代码.无法弄清楚什么是错的.谢谢

[编辑]

// include the basic windows header file
#include "D3Dapp.h"


class MyGame: public D3Dapp
{
    public:
        bool Init3d();
};
MyGame game;

struct SimpleVertex
{
    D3DXVECTOR3 Pos;  // Position
};


// the entry point for any Windows program
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
     game.InitWindow(hInstance , nCmdShow);
     return game.Run();
}


bool MyGame::Init3d()
{
    D3Dapp::Init3d();
    // Create vertex buffer
    SimpleVertex vertices[] =
    {
        D3DXVECTOR3( 0.0f, 0.5f, 0.5f ),
        D3DXVECTOR3( 0.5f, -0.5f, 0.5f ),
        D3DXVECTOR3( -0.5f, -0.5f, 0.5f ),
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

新的错误

1>c:\users\numerical25\desktop\intro todirectx\msdntutorials\tutorial0\tutorial\tutorial\main.cpp(14) : error C2146: syntax error : missing ';' before identifier 'Pos'
Run Code Online (Sandbox Code Playgroud)

sbi*_*sbi 29

error C2146: syntax error : missing ';' before identifier 'vertices'
Run Code Online (Sandbox Code Playgroud)

通常,当编译器不知道标识符之前的内容时会发生此错误.在你的情况下,这意味着编译器还没有看到SimpleVertex.

  • @numeric25:同样的答案适用。它现在抱怨在“Pos”之前缺少“;”。所以我认为它不知道`D3DXVECTOR3`。有那么难吗? (2认同)
  • 缺少d3dx10.h和libs (2认同)