特定のオブジェクトの値を交換しなければならない場合に遭遇しました。私自身のずさんなコピーアンドペーストのために、タイプ宣言も誤ってコピーしました。簡単な例を次に示します。
int main()
{
int i = 42;
cout << "i = " << i++ << endl;
// ... much later
if( isSwapRequired == true )
{
int i = 24;
cout << "i = " << i++ << endl;
}
cout << "i = " << i++ << endl;
}
残念なことに、コンパイラーはこれをキャッチせず、さらにi = 24
独自の小さなスコープで動作させました。その後、スコープ外で、i
として残ることがわかり43
ます。i
両方が同じレベルにある場合、コンパイラーはこの間違いを強制的にキャッチすることに気づきました。コンパイラが複数の宣言を異なる方法で処理する理由はありますか?
重要な場合は、VS10を使用しています。