for() 里的作用域出错,和书上讲的不一样?
#include <iostream>
void main()
{
for(int i=0; i <10; i++)
std::cout < < i;
std::cout < < std::endl;
for(int i=0; i <10; i++)
std::cout < < i;
}
编译错误:
error C2374: 'i ' : redefinition; multiple initialization
======================================
我记得在for() 里的int i,应该是语句块的内部变量,
作用域在for()语句块 的内部.
但怎么还出错?
[解决办法]
用的是vc吧,vc不标准的
[解决办法]
你使用的是不符合C++标准的编译器,所以这样
[解决办法]
vc 6.0在 for 里面定义变量都不合法,到7.0以上就没这个问题了。
[解决办法]
以前的C++允许同一个循环内的局部变量多处使用的,现在的标准不允许使用了。项目配置属性里有是否强制for循环一致性的配置。你配置一下。
或者
do
{
for(int i=0; i <10; i++)
std::cout < < i;
} while (0);
std::cout < < std::endl;
do
{
for(int i=0; i <10; i++)
std::cout < < i;
} while(0);
[解决办法]
是VC6的问题。你换做VC7和VC8都没有问题。
该标准应该是C++98标准的规定,而VC6刚好于98年推出,所以很多标准支持都很有限啊!
尤其是STL和模板,实现的相当粗糙,和标准有相当距离。
[解决办法]
换了编译器以后记得把void main()改成int main(),再加上返回值。
[解决办法]
用VC6.0的吧,用VS2005就没有错误了!
[解决办法]
如果想学好C++,你还是扔了VC6比较好,换VC200express或者devcpp。
[解决办法]
vc的问题,换了
[解决办法]
用 vc 写Cpp代码的时候,记得 ...
#define for if(0) ; else for
[解决办法]
VC6就这样
因为VC6是出在标准前的
用其他的编译器就OK
偶也郁闷了一段时间,呵呵
同情LZ一下
LZ开发的用的VS2005吧,如果学习用DEV就不错
[解决办法]
理论上没有问题,但是实际上和编译器有关。