breakはgoto



今日は自社製のマイコンボードの動作チェックをしてたんですが、しょうもないミスでずいぶん時間を無駄にしてしまいました。
whileの中のswitchをコメントアウトしたときにうっかりbreakをひとつコメントアウトし忘れたせいで、処理がループを抜けてあらぬ所へ行ってました。


よく考えると、breakって一種のgotoですよね。しかも飛び先が明示的でなく、階層が変わると飛び先が変わってしまう点はふつうのgotoよりいやらしい。
でもswitchではbreakを使わざるをえないですよねえ。C言語は構造化言語なのに、なんでswitchの文法は構造化にしなかったんだろう?