Мой друг только что пошутил, что это возможно в C, на что я ответил: невозможно. Оказалось, что это возможно и компилируется без ЛЮБЫХ предупреждений.Корпус выключателя внутри петли внутри корпуса коммутатора
#include "stdio.h"
int main(){
int x = 1;
switch(x) {
case 1:
printf("1\n");
while(1) {
case 2:
printf("bad 2\n");
}
break;
default:
printf("default\n");
break;
}
}
Установка x
1 или 2 результатов в бесконечном цикле печати bad 2
все время.
Почему? Что происходит, как это даже законно ???
Я использую GCC 4.8.2, Windows, -std=c99
...
Edit: Этот вопрос о том, почему это законно, если оно является законным, и с тех пор, когда. Примеры хороши, но не цель моего вопроса. Я хотел бы знать, что если все это размещение меток case
- это сознательный дизайн C или авария или утечка абстрагирования/детализации реализации?
О Дафф, где ты для тебя? –