continue 문에 쓰는 레이블은 반복문이나 switch 멤버에 있어야 해요

continue 문에 쓰는 레이블은 반복문이나 switch 멤버에 있어야 해요

continue 문에서 쓴 레이블이 반복문이나 switch 멤버에 정의되지 않았을 때 분석기가 이 진단을 띄워줘요. (이전에는 continue_label_on_switch라고 불렸어요.)

출처: The label used in a continue statement must be defined on either a loop or a switch member

본문

continue 문의 레이블이 switch 문에 붙어 있는 레이블로 해석될 때 분석기가 이 진단을 만들어요. continue 레이블은 반복문이나 switch의 case(멤버)를 가리켜야 하는데, switch 문 전체를 가리키면 안 돼요.

다음 코드는 switch 문을 가리키는 레이블 lcontinue 문에서 쓰고 있어서 이 진단이 나와요.

void f(int i) {
  l:
  switch (i) {
    case 0:
      continue l;
  }
}

고치는 방법

필요한 제어 흐름을 다른 방식으로 구현해 보세요. 예를 들어 switch 문을 다시 실행하는 반복문을 도입하면 돼요.

더 알아보기