2010-04-24 3 views
4

Я бы обычно искал эту ошибку. Но в VS C++ Express эта ошибка возникает почти каждая ошибка, которую вы делаете. Любой, как я получаю эту ошибку нижеошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'vertices'

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

каждый раз я добавить следующий код в верхней части моего документа

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

ниже код в полном комплекте. Не могу понять, что случилось. благодаря

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

новая ошибка

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

Является ли класс SimpleVertex определенным в 'D3Dapp.h'? –

+0

Нет, это не так. Первое появление SimpleVertex - это то, где вы его видите. – numerical25

+0

Я редактировал код. См. Начало – numerical25

ответ

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

Обычно эта ошибка возникает, когда то, что до того, как идентификатор не известно компилятором. В вашем случае это означает, что компилятор еще не видел SimpleVertex.

+0

Я редактировал код. См. Исходное сообщение – numerical25

+1

@ numerical25: применяется тот же ответ. Теперь он жалуется на ';' отсутствует перед 'Pos'. Поэтому я бы предположил, что он не знает 'D3DXVECTOR3'. Это было так сложно? – sbi

+0

Я верю. Но в то же время я бы заподозрил ошибку, заявив, что была выпущена необъявленная или неопределенная разновидность. Что-то в этом роде. – numerical25

3

Я определенно вижу недостающую точку с запятой ; в конце main прямо перед return true;.

+0

Да, я получил эту ошибку после того, как исправил первый. благодаря – numerical25

1

Дополнительная запятая добавляется в конце последнего элемента структуры. Я думаю, что это была ошибка.

SimpleVertex vertices[] = 
{ 
    D3DXVECTOR3(0.0f, 0.5f, 0.5f), 
    D3DXVECTOR3(0.5f, -0.5f, 0.5f), 
    D3DXVECTOR3(-0.5f, -0.5f, 0.5f)**,** 
} 
Смежные вопросы

 Смежные вопросы