2014-02-20 44 views
4

如果我的一個switch語句有一個沒有中斷的情況,我想得到一個警告/錯誤。這可能嗎?如果交換機的情況下,我怎麼能使MSVC警告或失敗?

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

類似Clang的特點是在去原生2012會議上討論,但我需要它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#,對於一個絕對強制中斷(或者像'throw'或'return'這樣的邏輯對等體) – sehe

+1

看起來像C++ 17接受了[[fallthrough]]屬性,所以希望MSVC很快就會實現它。 – Predelnik

回答

-2

switch的整個目的是你不要break,但是可以代替下一個case

當你真正想要的是if語句時,編譯器甚至提供禁止這個選項是沒有意義的。

+0

重複'if's,就像意外忘記'else'導致類似的行爲一樣容易 – sehe

+3

clang有一個選項,在海灣合作委員會有關於這個警告AFAIK的討論,我似乎不是唯一一個誰想要它。 – odinthenerd

+1

我很抱歉聽到這個消息。同時,聽起來像你有自己的問題的答案呢? –

相關問題