У меня есть программа 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);
Почему/как это?
Спасибо
break
? Разве компилятор не предупреждал о недоступности кода? Измените уровень предупреждения на самый высокий уровень (/W4). - person doptimusprime   schedule 10.06.2014HANDLE_MSG
выполняется из этого кода? Стек вызовов проверяет это? - person doptimusprime   schedule 10.06.2014