C – error: jump to case label

By | 2024년 4월 7일
Table of Contents

C – error: jump to case label

main.cpp:134:14: error: jump to case label
  134 |         case TYPE_DATA:
      |              ^~~~~~~~~
main.cpp:108:32: note:   crosses initialization of ‘libwifi_sta sta’
  108 |             struct libwifi_sta sta = {0};

원인

switch case 문 안에서 변수를 생성하면 발생하는 오류이다.

switch (key) {
    case 1:
        int i = 0;
        break;
    default:
        break;
}

case 문 안에서 변수를 생성하면,
case 문 아래에서는 변수가 있을 수도 있고 없을 수도 있다… 라는 상태가 된다.
case 문에 걸리면 변수가 있고, 안걸리면 없고…
그래서 오류를 떨군다.

해결

그냥 괄호로 묶어준다.
괄호 안에서만 변수가 존재한다는 것을 명확히 해주면,
변수가 있을 수도 있고 없을 수도 있다는 문제를 해결할 수 있다.

switch (key) {
    case 1: {
        int i = 0;
        break;
    }
    default:
        break;
}
```

```c

답글 남기기