Microsoft Visual C++には、Microsoft拡張機能というものが付いて
います。この機能とANSIIの間で変数スコープの解釈の差があります。つ
まり、この機能していると、次のような簡単なコードさへコンパイルで
きません。もちろん、このコードはg++ では問題なくコンパイルできま
す。コンパイルできない理由は、forループの変数i が二度定義されて
いるからです。
int main(int argc, char** argv)
{
int a=0;
for(register int i=0;i<10;i++)a+=i;
for(register int i=10;i<20;i++)a+=i;
return 0;
}
Microsoft拡張機能を止めれば、上のコードはコンパイルできるように
なります。コンパイラに/Zaというオプションを渡すか、環境変
数CLに値/Zaを設定することで可能です。
|