Page 71

switch 문은 모두 if/else 문으로 변환할 수 있다. 예를 들어 앞의 코드를 다음과 같이 변환할

수 있다. if (menuItem == OpenMenuItem) { // 파일을 여는 코드 } else if (menuItem == SaveMenuItem) { // 파일을 저장하는 코드 } else { // 에러 메시지를 출력하는 코드 }

switch 문은 표현식을 테스트한 결과가 아닌, 하나의 표현식에서 나오는 여러 가지 값에 따라

동작을 결정하는 용도로 주로 사용한다. 이럴 때는 if/else 문을 연달아 쓰기보다는 switch 문 으로 작성하는 것이 훨씬 더 깔끔하다. 동작을 나눌 기준값이 하나뿐일 때는 if나 if/else 문이 나을 수 있다. switch 문의 조건으로 지정한 값과 일치하는 case 문이 있다면 그 아래 나오는 문장을 break

문이 나타날 때까지 실행한다. 이때 break 문이 없다면 다음에 나오는 case 문도 계속해서 실행 하는데, 이렇게 실행되는 것을 폴스루 fallthrough (흘려보내기)라 부른다. 다음 코드는 여러 case 문에 대해 동일한 코드 블록을 실행하도록 폴스루 방식으로 작성한 예를 보여주고 있다. switch (backgroundColor) { case Color::DarkBlue: case Color::Black: // 배경색이 진청 혹은 검정일 때 실행될 코드 break; case Color::Red: // 배경색이 빨강일 때 실행될 코드 break; }

C++17

폴스루 방식으로 작성하면 버그가 발생하기 쉽다. 예를 들어 중간에 break 문을 깜박 잊고 빠뜨 렸을 경우가 그렇다. 컴파일러가 switch 문에서 폴스루 구문을 발견했는데 위 예제처럼 해당 케 이스가 비어 있지 않으면 경고 메시지를 발생한다. C++17부터 다음과 같이 [[fallthrough]] 속성을 지정해서 의도적으로 폴스루 방식으로 작성했다고 컴파일러에 알려줄 수 있다.8 8 옮긴이_ 비주얼 스튜디오 2017 커뮤니티 에디션의 자동완성 기능은 언더바 두 개를 연달아 붙인 [[__fallthrough]]라고도 표기한다.

1장 C++와 표준 라이브러리 초단기 속성 코스

71

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

Advertisement