다음 코드는 컴파일 :switch 문 안에 임의의 레이블을 허용하는 이유는 무엇입니까?
int a = 0;
switch (a)
{
case 1:
return;
defau1t: // note the typo
return;
}
defau1t
때문에이 goto
레이블로 해석됩니다. 다음과 같은 경우에 그러나
는 :
오류 CS1525 : 예기치 않은 기호
defau1t', expecting
} ',case', or
기본'
왜
switch (a)
{
defau1t:
return;
}
컴파일러 올바르게 실수를 식별 그게 뭐야? switch
문에서 임의의 레이블을 허용하는 이유는 (겉으로보기에) 일관성없는 동작으로 연결되는 경우 무엇입니까?
사이드 노트 : C++ 및 Java와 유사한 조각으로 동일한 문제가 발생할 수 있습니다.
레이블이 허용되지 않는 곳이 있습니까? 누군가가 특별히 스위치를 허용하기로 결정한 것은 아닙니다. – mellamokb
"* switch_only_statement *"를 일반 "* statement"이외에 만들지 않고'switch' 안에 * 레이블을 허용하지 않는 것이 제 생각으로 –
레이블을 가질 수 없다면'goto'는 무의미합니다. , 그렇지? – hvd