現在のコードにバグがあり、数日間頭をぶつけてきました。以下にコードの要約バージョンを投稿します(実際のコードではありませんが、コンパイルされます)。
#include <iostream>
using namespace std;
int main()
{
int x = 7;
switch(x)
{
case 1:
{
case 2:
cout << "hi";
}
}
}
ローカル変数名が以前に使用したものと干渉しないように、スイッチケースに厳密なスコープを導入することがあります。どうやら、ある日電話で返事をしたり、思い通りにケースステートメントを書き終えなかったようですが、後で確信が持てました。ケース2は、元の外部スイッチの一部としてではなく、実際にはネストされたスイッチに含まれている必要があります(不思議に思う人のために、コードではマジックナンバーだけでなく名前付き定数を使用しています)。g ++では、オプションなしでコンパイルしても警告やエラーは発生しませんでした。
私の質問:なぜクロススコープケースがスイッチからジャンプするのを許可するのですか?それはどのような目的に役立ちますか?