switch
次のようなステートメントを含むプログラムがあります。
switch(n)
{
case 0:
/* stuff */
break;
int foo;
case 1:
foo = 5;
break;
case 2:
foo = 6;
break;
}
int foo;
と の間case 0
に注目してくださいcase 1
。このステートメントは到達不可能です: プログラムをウォークスルーする場合、プログラムをステップオーバーすることはありません。
これはClangで警告やエラーなしでコンパイルされますが、実行するとジャッキアップしたように見えました(ただし、他の原因が原因である可能性があります).
到達不能ステートメントで変数を宣言し、それを到達可能ステートメントで使用することは明確に定義された動作ですか?それは機能しますか?