Program Tip

다음을 사용하여 컴파일 오류 : 스위치, "이전에 예상되는 표현식"

programtip 2020. 10. 11. 11:15
반응형

다음을 사용하여 컴파일 오류 : 스위치, "이전에 예상되는 표현식"


꽤 자명하기 때문에 내 문제를 재현했습니다.

이것은 오류없이 준수합니다.

switch (n) {
    case 1:
        NSLog(@"");
        NSString *aStr;
        break;
    default:
        break;
    }

이것은 오류함께 컴파일되며 NSLog () 만 누락되었습니다.

switch (n) {
    case 1:
        NSString *aStr;
        break;
    default:
        break;
    }

컴파일시 오류가 발생합니다. " 'NSString'앞에 예상되는 표현식 "

여기에 뭔가 빠졌나요?


일반 C에서는 두 경우 모두 괄호로 묶어야합니다. 이것이 문제를 해결할 수 있다고 생각합니다.

case 1:
{
    NSLog(@"");
    NSString *aStr;
    break;
}

자세한 내용은 이 SO 질문 을 참조하십시오.

이 문제를 해결하는 또 다른 방법은 위의 작업 예제에서 수행 한 것처럼 case 레이블과 첫 번째 선언 사이에 문을 넣는 것입니다. 자세한 내용은 의견과 Quinn Taylor의 답변을 참조하십시오.


대괄호 없는 a 및 C 기반 언어의 다른 많은 컨텍스트에서는 변수를 첫 번째으로 선언 할 수 없습니다 case. 자세한 내용 은 switch 문 내에서 변수 선언 을 참조하세요.


case 0: {
    Loading my nib file;
    break; 
}
case 1: {
    Loading another nib file;
    break; 
}
Note that if you don't have an assignment (x = y) right after the case it won't be a problem. For example:

참고 URL : https://stackoverflow.com/questions/2036819/compile-error-with-switch-expected-expression-before

반응형