스위치 내에서 루프를 종료하는 대체 접근 방식
특정 시나리오에서는 내부에서 둘러싸는 루프를 종료해야 할 수도 있습니다. 스위치 문. 플래그를 사용하는 것이 일반적인 접근 방식이지만 C에서는 goto 문을 사용하는 대체 솔루션을 제공합니다.
딜레마:
다음 코드 조각을 고려하세요.
<code class="cpp">while(true) { switch(msg->state) { case MSGTYPE: // ... break; // ... more stuff ... case DONE: // **HERE, I want to break out of the loop itself** } }</code>
목표는 msg->state가 DONE과 같을 때 즉시 루프를 종료하는 것입니다.
goto 사용:
C에서는 다음을 사용할 수 있습니다. 코드의 특정 위치로 명시적으로 점프하려면 goto 문을 사용하세요. 이를 활용하여 원하는 동작을 달성할 수 있습니다.
<code class="cpp">while ( ... ) { switch( ... ) { case ...: goto exit_loop; // Jump to this location when msg->state is DONE } } exit_loop: ; // Label for jump target</code>
이 수정된 코드에서 msg->state가 DONE과 같을 때 goto 문은 실행 흐름을exit_loop 레이블로 지정합니다. 결과적으로 스위치와 둘러싼 루프가 모두 종료됩니다.
참고: goto 문의 대상을 식별하려면 레이블(:)을 사용하는 것이 중요합니다. goto를 무분별하게 사용하면 스파게티 코드 및 유지 관리 문제가 발생할 수 있습니다.
위 내용은 C의 Switch 문 내에서 루프를 종료하는 방법: `goto` 또는 플래그를 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!