[C++] jump to case label [-fpermissive] 오류

MTTW·2021년 1월 19일
0

C++

목록 보기
1/4

백준 문제를 풀던 중 case문에서 에러가 발생했다.
뭔가 낯이 익다는 생각이 들었는데 알고보니 컴파일러 과제할 때 마주했던 에러였다. 생각난 김에 벨로그에 기록을 남긴다.

위 에러가 발생한 코드의 일부를 가져왔다.

for(int i=0; i<f_len; i++){
        switch(formula[i]){
        case '+':
            long long prev = calc.top();
            calc.pop();
            calc.push(prev + num);
            num = 0;
            break;
        case '-':
            calc.push(num);
            num = 0;
            break;
        default :
            num = num*10 + (formula[i]-'0');
            break;
        }
    }

여기에서 문제가 되는 건 아래 부분이다.

	case '+':
            long long prev = calc.top();

switch의 case문 안에서는 변수 선언을 함부로 할 수 없다. 밖에서 선언한 변수를 사용하거나, 내부에서 선언할 경우에는 block으로 묶어줘야한다. 아래처럼!

for(int i=0; i<f_len; i++){
        switch(formula[i]){
        case '+':
        {
            long long prev = calc.top();
            calc.pop();
            calc.push(prev + num);
            num = 0;
            break;
        }
        case '-':
            calc.push(num);
            num = 0;
            break;
        default :
            num = num*10 + (formula[i]-'0');
            break;
        }
    }

묶어주면 더 이상 에러창이 나타나지 않는다.

해당 문제는 풀이를 수정하는 바람에 block은 지울 수 있었다. 머쓱(´・ω・`)

끝✌

profile
개발자가 되고 싶은 맽튜

0개의 댓글