Cub*_*i73 7 c++ winapi switch-statement
在以下两个定义中,产生错误C2360的巨大差异在哪里?
switch (msg) {
case WM_PAINT:
HDC hdc;
hdc = BeginPaint(hWnd, &ps); // No error
break;
}
Run Code Online (Sandbox Code Playgroud)
和
switch (msg) {
case WM_PAINT:
HDC hdc = BeginPaint(hWnd, &ps); // Error
break;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
当在一种情况下声明变量时,下一种情况从技术上讲仍然在相同的范围内,因此您可以在那里引用它,但如果您在没有先触及此情况的情况下触及该情况,则最终会调用未初始化的变量。这个错误可以防止这种情况发生。
您需要做的就是在 switch 语句之前定义它,或者使用大括号 { } 以确保它在退出特定情况之前超出范围。
switch (msg) {
case WM_PAINT:
{
HDC hdc;
hdc = BeginPaint(hWnd, &ps);
}
break;
}
Run Code Online (Sandbox Code Playgroud)