You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Visual Studio 2019中编写DirectX代码出现'{'和';'错误求助

解决Visual Studio 2019中的语法错误问题

嘿,我一眼就看到你代码里的问题啦!咱们来逐个修复:

1. 变量拼写错误

你的WinMain函数参数里把hInstance拼成了hIstance(注意是字母n不是大写I),而且后面给wc.hInstance赋值时也用了这个错误的拼写。这会导致编译器识别不了这个变量,虽然你提到的是{和;的错误,但这个拼写问题也是需要先修正的。

2. while循环的括号优先级与匹配问题

这才是导致你看到的语法错误的核心原因!你原来的循环条件写法有问题:

while( (gResult = GetMessage( &msg,nullptr,0,0 ) > 0 )

这里有两个问题:

  • 运算符优先级:>的优先级比=高,所以编译器会先计算GetMessage(...) > 0,把得到的布尔值赋值给gResult,这不是你想要的逻辑。
  • 括号不匹配:你少了一个闭合括号,导致编译器无法正确解析代码结构,进而抛出看似不相关的{和;错误。

正确的写法应该把gResult = GetMessage(...)整个用括号包裹起来,确保先完成赋值,再判断返回值是否大于0:

while( (gResult = GetMessage( &msg, nullptr, 0, 0 )) > 0 )

修正后的完整代码

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) {
    switch (msg) {
        case WM_CLOSE:
            PostQuitMessage( 69 );
            break;
    }
    return DefWindowProc( hWnd, msg, wParam, lParam );
}

int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    const auto pClassName = "directX12";
    WNDCLASSEX wc = { 0 };
    wc.cbSize = sizeof(wc);
    wc.style = CS_OWNDC;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance; // 修正拼写
    wc.hIcon = nullptr;
    wc.hCursor = nullptr;
    wc.hbrBackground = nullptr;
    wc.lpszMenuName = nullptr;
    wc.lpszClassName = pClassName;
    wc.hIconSm = nullptr;
    RegisterClassEx(&wc);

    HWND hWnd = CreateWindowEx( 0, pClassName, "Happy Hard Window", WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU, 200, 200, 640, 480, nullptr, nullptr, hInstance, nullptr );
    ShowWindow(hWnd, SW_SHOW);

    MSG msg;
    BOOL gResult;
    // 修正循环条件的括号
    while( (gResult = GetMessage( &msg, nullptr, 0, 0 )) > 0 ) {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }

    if(gResult == -1 ) {
        return -1;
    } else {
        return msg.wParam;
    }
}

顺便说一句,编译器有时候在遇到括号不匹配这类语法错误时,给出的错误提示可能会偏离实际问题位置,这是因为解析器被打乱了节奏,以后遇到类似情况可以先检查括号、运算符优先级这类基础语法点哦!

内容的提问来源于stack exchange,提问作者DaFragileTomato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:12:30