少しタイプミスをして、私は誤ってこの構成を見つけました:
int main(void) {
char foo = 'c';
switch(foo)
{
printf("Cant Touch This\n"); // This line is Unreachable
case 'a': printf("A\n"); break;
case 'b': printf("B\n"); break;
case 'c': printf("C\n"); break;
case 'd': printf("D\n"); break;
}
return 0;
}
と思われるprintf
の一番上のswitch
文が有効でなく、完全に到達不能です。
到達できないコードについての警告さえないまま、クリーンなコンパイルを取得しましたが、これは無意味なようです。
コンパイラはこれに到達できないコードとしてフラグを立てるべきですか?
これは何か目的を果たしますか?
goto
そうでなければ到達できない部分に出入りすることができます。これは、さまざまなハックに役立つ場合があります。
switch
持つ条件goto
付きです。gotoラベルで満たされた通常のコードブロックと同じように、本文に同じ制限があります。
-Wswitch-unreachable