2014-02-20 4 views
4

내 스위치 명령문 중 하나가 중단되지 않는 경우 경고/오류 메시지를 표시하고 싶습니다. 이것이 가능한가?스위치 케이스가 고장 나면 MSVC를 경고 또는 실패로 만들 수 있습니까?

switch (i){ 
case 1: 
    cout << "one"; 
//forgot to break here, I want to be warned about this 
case 2: 
    cout << "two"; 
    break; 
} 

비슷한 연타 기능은 기본 2,012 회의를가는 논의했지만 내가 이상적으로는 두 개의 연속 몸이 휴식에 의해 분리되지 않은 경우에 대한 경고를 원할 것 MSVC2013 http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys

위해 필요 예 있도록 위의 실패하지만 것이없는 것 :

switch (i){ 
case 1: 
    cout << "one"; 
    break; 
case 2: 
case 3: 
    cout << "not one"; 
    break; 
} 
+0

@이 프로젝트에는 선택의 여지가 없지만 호기심 때문에이 작업을 더 잘 수행 할 수있는 언어는 무엇입니까? – odinthenerd

+0

C#은 절대로 하나의 break (또는'throw' 나'return'와 같은 논리적으로 등가물)를 요구한다. – sehe

+1

'[[fallthrough]] 속성이 C++ 17에 받아 들여져서 MSVC가 꽤 빨리 구현 될 것이다. . – Predelnik

답변

-2

번호

switch의 전체 목적은 에서 break이 아니라 다음 case으로 넘어갈 수 있다는 것입니다.

컴파일러가 이것을 허용하지 않는 옵션을 제공하는 것은 의미가 없습니다. 실제로 원하는 것이 if 인 경우입니다.

+0

반복되는'if's를 사용하면 우연히 비슷한 동작을하는 else를 잊어 버리기 쉽습니다. – sehe

+3

clang에 옵션이 있고 GCC에이 경고에 대한 토론이 있습니다. AFAIK, 나는 원하는 사람이 아닌 것 같습니다. 그것. – odinthenerd

+1

그 점은 유감입니다. 그 동안 자신의 질문에 대한 대답을 가지고있는 것처럼 들리는가? –