そんなに古いコンパイラを使うな!って話ですが、使わないといけないんだから仕方がない。
なにがうざいかって、C++のくせに
for (int i = 0; i < 10; i++) {
x++;
}
for (int i = 0; i < 10; i++) {
x++;
}
って書けないところ。一個だけならいいんだけど、二個書くとiが再定義されたって怒られる。こっちが怒ってやりたい。そういうわけで無理矢理下記みたいにしてコンパイル通したりしてる。
{
for (int i = 0; i < 10; i++) {
x++;
}
}
{
for (int i = 0; i < 10; i++) {
x++;
}
}
{ }で囲んでおけばローカルスコープになるのでiはローカルブロック内だけで有効になり問題ないようだ。まじめにやろうとしたら、ちゃんとiを最初に定義ししておくか、_MSC_VER < 1300とかで分岐させて書くのかもしれない。めんどくさい。
以上
2008-09-22 追記: (コメントより)
C++の古い仕様らしい。
http://www.ksky.ne.jp/~seahorse/cpp/loopvar.html
つ http://www.ksky.ne.jp/~seahorse/cpp/loopvar.html
VCではなくてC++の仕様だったんですね。
情報どうもありがとう。