C ++ Força erro / aviso em tempo de compilação no fall-through implícito no comutador
switch
declarações podem ser super úteis, mas levam a um erro comum em que um programador esqueceu uma declaração de interrupção:
switch(val) {
case 0:
foo();
break;
case 1:
bar();
// oops
case 2:
baz();
break;
default:
roomba();
}
Obviamente, você não receberá um aviso, pois algumas vezes é explicitamente desejado. Um bom estilo de codificação sugere comentar quando sua explicação é deliberada, mas às vezes isso é insuficiente.
Tenho certeza de que a resposta a esta pergunta é não, mas: existe alguma maneira atualmente (ou proposta no futuro) de pedir ao compilador para gerar um erro (ou pelo menos um aviso!) Se o seucase
não tem pelo menos um dosbreak;
ou algo para o efeito de// fallthru
? Seria bom ter uma opção de programação defensiva para usarswitch
afirmações.