1
나는이 다음 코드 :C++ 고토 (계속보다는) 구문 이상한
do
{
doStuffP1();
if (test)
{ goto skip_increment;
}
dostuffP2();
skip_increment:
// 1; // Only works if I remove the comment at line start.
} while (loop);
컴파일되지 않는 (++ 2010 VC)이 오차 :
file_system_helpers.cpp(109) : error C2143: syntax error : missing ';' before '}'
I가 그것을 변경하는 경우 :
skip_increment:
1;
컴파일 (및 작동).
이것은 실제로 C++ 구문의 제한 사항입니까?
나는'고토 인식 '는 거의 보편적으로 싫은 것이지만 내부 루프에서 외부 루프를 '계속'하는 훌륭한 방법은 없다. 내가 생각할 수있는 유일한 방법은 여분의 변수 (바깥 쪽 루프가'continue'인지 아닌지를 저장하는'bool')를 포함합니다. –
나는 여분의'bool'을 사용하는 것이'goto'보다 낫지 만, 나는 프로그래머로서 경험이 없다고 주장한다. 나는'goto' 자체가 사용할 안전한 진술이라고 믿지 않으며, 여분의 변수는 그다지 비용이 들지 않을 것입니다. 그렇습니까? 하지만 그것은 제 2c입니다. ^^ ' – blahman
코드를 함수에 추출하고 조기 반환을 사용하십시오. –