简体   繁体   English

VC ++:奇怪的编译器错误

[英]VC++: Weird compiler errors

I'm working in visual studio with DirectX and today I've gotten some weird compiler errors that don't make any sense (to me at least)... 我正在使用DirectX在Visual Studio中工作,今天我遇到了一些奇怪的编译器错误,这些错误没有任何意义(至少对我而言)...

These are the errors I get: 这些是我得到的错误:

error C2143: syntax error : missing ';' 错误C2143:语法错误:缺少';' before '.' 在“。”之前 error C2059: syntax error : ')' 错误C2059:语法错误:')'

I've double checked my code and didn't spot any typos/mistakes (I could be wrong...) 我仔细检查了我的代码,没有发现任何错别字/错误(我可能错了...)

I'm hoping that someone can tell me what the error usually means and where to look... 我希望有人能告诉我该错误通常意味着什么以及在哪里寻找...

I'll put some code below with the indication of the line where the errors occur (in case you want to check) 我将在下面放置一些代码,以指示发生错误的行(以防您要检查)


Extra info: m_ImTexture2D is a member struct. 额外信息:m_ImTexture2D是成员结构。 Vertex.PosTex is a struct within a struct Vertex.PosTex是结构内的结构

GameManager.cpp:

(231): error C2143: syntax error : missing ';' before '.'
(231): error C2143: syntax error : missing ';' before '.'
(232): error C2143: syntax error : missing ';' before '{'
(233): error C2143: syntax error : missing ';' before '}'
(233): error C2143: syntax error : missing ';' before ','
(234): error C2143: syntax error : missing ';' before '{'
(234): error C2143: syntax error : missing ';' before '}'
(234): error C2143: syntax error : missing ';' before ','
(235): error C2143: syntax error : missing ';' before '{'
(235): error C2143: syntax error : missing ';' before '}'
(235): error C2143: syntax error : missing ';' before ','
(237): error C2143: syntax error : missing ';' before '{'
(237): error C2143: syntax error : missing ';' before '}'
(237): error C2143: syntax error : missing ';' before ','
(238): error C2143: syntax error : missing ';' before '{'
(238): error C2143: syntax error : missing ';' before '}'
(238): error C2143: syntax error : missing ';' before ','
(239): error C2143: syntax error : missing ';' before '{'
(239): error C2143: syntax error : missing ';' before '}'
(246): error C2143: syntax error : missing ')' before '.'
(246): error C2143: syntax error : missing ';' before '.'
(246): error C2143: syntax error : missing ';' before '.'
(246): error C2059: syntax error : ')'
(249): error C2065: 'vertices' : undeclared identifier

bool GameManager::GMLoadImage(Image** ppImage, const char* pkcFilePath, ImageDesc* pImDesc)
{
    (*ppImage) = new Image();

    ID3D11ShaderResourceView** ppColorMap = (*ppImage)->GetppColorMap();


/// CREATE SHADER RESOURCE VIEW (from file) ///
    HRESULT result = D3DX11CreateShaderResourceViewFromFileA(m_pDevice,
                                                             pkcFilePath,
                                                             0,
                                                             0,
                                                             ppColorMap,
                                                             0);
    if (FAILED(result)) {
        MessageBoxA(NULL,"Error loading ShaderResourceView from file","Error",MB_OK);
        return false;
    }


/// RECEIVE TEXTURE DESC ///
    ID3D11Resource* pColorTex;
    (*ppColorMap)->GetResource(&pColorTex);
    ((ID3D11Texture2D*)pColorTex)->GetDesc(&((*ppImage)->GetColorTexDesc()));
    pColorTex->Release();

/// CREATE VERTEX BUFFER ///
    D3D11_TEXTURE2D_DESC colorTexDesc = (*ppImage)->GetColorTexDesc();
    float halfWidth = static_cast<float>(colorTexDesc.Width)/2.0f;
    float halfHeight = static_cast<float>(colorTexDesc.Height)/2.0f;

/*231*/ Vertex.PosTex vertices[]=
/*232*/ {
/*233*/     {XMFLOAT3( halfWidth, halfHeight, 1.0f ),   XMFLOAT2( 1.0f, 0.0f )},
/*234*/     {XMFLOAT3( halfWidth, -halfHeight, 1.0f ),  XMFLOAT2( 1.0f, 1.0f )},
/*235*/     {XMFLOAT3( -halfWidth, -halfHeight, 1.0f ), XMFLOAT2( 0.0f, 1.0f )},
/*236*/
/*237*/     {XMFLOAT3( -halfWidth, -halfHeight, 1.0f ), XMFLOAT2( 0.0f, 1.0f )},
/*238*/     {XMFLOAT3( -halfWidth, halfHeight, 1.0f ),  XMFLOAT2( 0.0f, 0.0f )},
/*239*/     {XMFLOAT3( halfWidth, halfHeight, 1.0f ),   XMFLOAT2( 1.0f, 0.0f )}
        };

        D3D11_BUFFER_DESC vertexDesc;
        ZeroMemory(&vertexDesc,sizeof(vertexDesc));
        vertexDesc.Usage = D3D11_USAGE_DEFAULT;
        vertexDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
/*246*/ vertexDesc.ByteWidth = sizeof(Vertex.PosTex)*6;

        D3D11_SUBRESOURCE_DATA resourceData;
/*249*/ resourceData.pSysMem = vertices;

    ID3D11Buffer** ppVBuffer = (*ppImage)->GetppVertexBuffer();
    result = m_pDevice->CreateBuffer(&vertexDesc,&resourceData,ppVBuffer);

    if (FAILED(result)) {
        MessageBoxA(NULL,"Error Creating VBuffer","Error",MB_OK);
        return false;
    }



/// SET POINTER TO IMAGEDESC
    ImageDesc** ppThisImDesc = (*ppImage)->GetppImageDesc();
    (*ppThisImDesc) = pImDesc;

    return true;
}

DxTetris.cpp: DxTetris.cpp:

(27): error C2143: syntax error : missing ')' before '.'
(27): error C2143: syntax error : missing ';' before '.'
(27): error C2143: syntax error : missing ';' before '.'
(27): error C2059: syntax error : ')'

bool DxTetris::LoadContent()
{
    GameManager::GMInitSingleton(m_pD3DDevice,m_pD3DContext,m_pBackBufferTarget);

    m_ImTexture2DDesc.Topology = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
/*27*/m_ImTexture2DDesc.VertexSize = sizeof(Vertex.PosTex);

    //.....(code goes on)
}

In C++, the scope resolution operator is :: , not . 在C ++中,范围解析运算符为:: ,而不是. ; ; consequently, you need to use Vertex::PosTex rather than Vertex.PosTex . 因此,您需要使用Vertex::PosTex而不是Vertex.PosTex

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM