Я всегда задавался этим вопросом - почему вы не можете объявлять переменные после метки case в инструкции switch? В С++ вы можете объявить переменные почти везде (и объявить их близкими к первому использованию, очевидно, хорошо), но следующее все равно не будет работать:
switch (val)
{
case VAL:
// This won't work
int newVal = 42;
break;
case ANOTHER_VAL:
...
break;
}
Вышеуказанная ситуация дает мне следующую ошибку (MSC):
инициализация "newVal" пропускается меткой "case"
Это тоже ограничение на других языках. Почему такая проблема?