views:

471

answers:

2

I would usually search for this error. But in VS C++ Express, this error comes up for just about every mistake you do. Any how I recieve this error below

error C2146: syntax error : missing ';' before identifier 'vertices'

everytime I add the following code at the top of my document

// 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 ),
};

below is the code in it's entirety. Cant figure out whats wrong. thanks

[EDIT]

// 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;
}

new error

1>c:\users\numerical25\desktop\intro todirectx\msdntutorials\tutorial0\tutorial\tutorial\main.cpp(14) : error C2146: syntax error : missing ';' before identifier 'Pos'
+6  A: 
error C2146: syntax error : missing ';' before identifier 'vertices'

Usually this error occurs when what's before the identifier isn't known to the compiler. In your case that means the compiler hasn't seen SimpleVertex yet.

sbi
I edited the code. See the original post
numerical25
@numerical25: The same answer applies. It now complains about a `;` missing before `Pos`. So I would presume it doesn't know `D3DXVECTOR3`. Was that so hard?
sbi
I believe it. But at the same time I would suspect an error stating that undeclared or undefined varible has been made. Something along those lines.
numerical25
missing d3dx10.h and libs
numerical25
@numerical25: Giving good error messages means that compiler writers anticipated errors and added a special rule which successfully parsed them - only that the compiler spits an error message at you. But C++' grammar is a nightmare, making compiler writers tear out their hair over trying to get their compiler to successfully compile _conforming_ programs. And then, even given resources to do that, sometimes it's nigh impossible to give better error messages. Considering `class X {] obj;`, how would a compiler know that in `class X {} R f();` `R` isn't an object of `X`? But then what is `f();`?
sbi
+2  A: 

I definitely see a missing semicolon ; toward the end of main right before return true;.

Ben Voigt
Yea, I got that error after I corrected the first one. thanks
numerical25