我有一個C Win32程序執行中斷後的開關大小寫命令
有一個消息處理函數具有switch-case語句來處理消息。
有一種現象讓我感到驚訝...我會盡量用簡單的話來解釋。
switch (Message)
{
case 0:
printf("Case 0 \n");
break;
case 1:
printf("Case 1 \n");
break;
printf("After Break Case 1 \n");
case 2:
switch(WHAT_SC(wParam)) {
case 1:
case 2:
if (KEYBOARD_UNLOCKED()) {
defstatus = DefWindowProc(hWnd, iMessage, wParam, lParam);
}
break;
case 3:
if (bLockWindowSize) {
return (TRUE);
}
default:
defstatus = DefWindowProc(hWnd, iMessage, wParam, lParam);
break;
}
break;
HANDLE_MSG(hWnd, WM_COMMAND, Func_OC);
case 3:
printf("Case 3 \n");
break;
printf("After Break Case 3 \n");
default :
printf("default \n");
break;
printf("After Break default \n");
}
(以上代碼僅僅是僞代碼) 在某些點突破後命令被執行。 即
HANDLE_MSG(hWnd, WM_COMMAND, Func_OC);
爲什麼/這是怎麼回事?
感謝
是,在調試或發行版本? – cup
它不應該,如果先前的突破實在是相對於外switch case(即沒有額外的循環類似的東西)你能發佈真實的代碼嗎? –
爲什麼你在'break'之後有語句?沒有編譯器給出無法訪問的代碼警告?將警告級別更改爲最高等級(/ W4)。 – doptimusprime