반응형
요즘에 C언어로 개발을 하면서 여러가지 문법이 헷갈린다. -_-
C언어에서의 기본적인 Switch 문은 아래와 같다.
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
case 문 마다 break 바로바로 걸어주고
예외처리를 위해서 default 도 귀찮지만 적어주고 나름 온갖(?) 노력을 다해서
코드를 작성 중이다. ㅋㅋ
그런데 실제로 스위치문을 타고 어디까지 들어오는지 확인하기 위해
아래와 같이 코드를 작성했다.
int a = 0
switch(expression) {
a = 1;
case x:
a = 2;
break;
case y:
a = 3;
break;
default:
a = 4;
break;
printf("%d\n", a);
}
a라는 변수를 만들어서 case x 까지 들어오면 a는 2가 되고 마지막에
print 문에서 2를 찍는 방법이다. print 문에 대한 부담이 큰 embedded 개발중에 유용하게 써먹고 있는데,
계속해서 컴파일 에러가 나는 것이다. 그것도 a = 1; 여기 부분에서.
아니 왜 저기서 에러가 자꾸 나지 하고 보니까,
스위치 문의 분기점에서 저 부분으로 갈 일이 전혀 없는 구간에
변수에 값을 대입했다.
사실 컴파일러에 따라서 별 의미 없는 부분이니
그냥 넘어가도 되었겠지만, 이놈의 내가 쓰는 컴파일러는 (IAR Workbench : 약 500만원 ㅋㅋㅋ)
아주 친절한건지 꼼꼼한건지 저거저거 저기 지우라고 썽을 내더라.
int a = 0
switch(expression) {
// a = 1;
// 삭제
case x:
a = 2;
break;
case y:
a = 3;
break;
default:
a = 4;
break;
printf("%d\n", a);
}
삭제하니까 잘 돌아간다. 후후후.
반응형
'C언어' 카테고리의 다른 글
[C언어] 2차원 배열 파라미터(매개변수)로 넘기기 (0) | 2023.02.14 |
---|---|
[C언어] 구조체 초기화하는 방법 (0) | 2023.02.07 |
[C언어] 문자열, string 사용하는 방법 (0) | 2023.01.31 |
[C언어] 함수 포인터 배열, 실제 코드로 알아보자 (0) | 2023.01.31 |
[C언어] 함수포인터, function pointer 사용법 (0) | 2023.01.27 |
댓글