c++很奇怪的有关问题,请各位指教!

c++很奇怪的问题,请各位指教!!
//=======================================  
//内联性能测试  
//=========================================  
#include   <iostream>  
#include   <ctime>  
using   namespace   std;  
//------------------------------------------  
int   calc1   (int   a,   int   b)  
{  
return   a+b;  
}  
//------------------------------------------  
inline   int   calc2   (int   a,   int   b)  
{  
return   a+b;  
}  
//-----------------------------------------  
int   main()  
{  
int   x[300],   y[300],   z[300];  
clock_t   t   =   clock();  
for(int   i=0;   i <300;   ++i)  
for(int   j=0;   j <300;   ++j)  
for(int   k=0;   k <300;   ++k)  
z[i]   =   calc1(x[j],   y[k]);  
cout   < <   "Not   using   inline: "   < <   (clock()-t)/CLK_TCK   < <   "seconds "   < <   endl;  

t   =   clock();  
for(int   i=0;   i <300;   ++i)//第25行  
for(int   j=0;   j <300;   ++j)  
for(int   k=0;   k <300;   ++k)  
z[i]   =   calc2(x[j],   y[k]);  
cout   < <   "Using   inline: "   < <   (clock()-t)/CLK_TCK   < <   "seconds "   < <   endl;  

return   0;  
}  
//===============================================================  

错误提示:  
第25行处,i重复定义   ,第26,27行的j,k没有提示出错呢,只有i提示重复定义
请问是什么原因?是编译器的问题吗?vc6


------解决方案--------------------
VC6啊,换VC7以上或者devcpp。
------解决方案--------------------
在VS2005下没问题呀,
Not using inline:2seconds
Using inline:2seconds
------解决方案--------------------
vc6是这样解释的
int i=0;
for(; i <300; ++i)
{
int j=0;
for(; j <300; ++j)
{
int k=0;
for(; k <300; ++k)
z[i] = calc1(x[j], y[k]);
}
}
------解决方案--------------------
因为j,k是在i的循环里面,所以不会出错
------解决方案--------------------
i当然出现了重复定义,而j和k由于作用域的问题不会产生重复定义
其他的编译器就不知道了
------解决方案--------------------
这个是VC6编译器的问题,按照标准,这样是可以的

没有办法,你用VC6,就得稍微向它妥协
------解决方案--------------------
vc6不够标准,标准要求for里面的变量在for结束后作用域就结束了。vc6认为仍然可见的

------解决方案--------------------
内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。以下情况不宜使用内联:
(1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。
(2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。

------解决方案--------------------
我在vc7.0中运行的时候没有错误,可能就是6.0的问题

--------------------
Vc7中有编译选项的,你打开的话结果与6中一样。
------解决方案--------------------