关于多重定义,来人啊,救命啊
#include<iostream>
using namespace std;
int main()
{
int i = 2;
int array[11];
for(int i = 0; i <= 10; i++)
array[i] = 100;
for(int i = 0; i <= 10; i++)
cout << array[i] << endl;
}
这个为什么没有造成多重定义……………………难道循环看做是函数??
[解决办法]
int main()
{
int i = 2; //i定义一次
int array[11];
for(int i = 0; i <= 10; i++) //i定义两次
array[i] = 100;
for(int i = 0; i <= 10; i++) //i定义三次
cout << array[i] << endl;
}
换成
int main()
{
int i;
int array[11];
for(i = 0; i <= 10; i++)
array[i] = 100;
for(i = 0; i <= 10; i++)
cout << array[i] << endl;
[解决办法]
+1
[解决办法]
举个例子
void fun()
{
int i = 1;
for(int i = 0;;){
……
}
}
这里有两个i,第一个i的生命周期是fun函数,第二个i的生命周期是for循环内部,如果你在for循环内使用i,优先只用循环内部的i,如果没有在向外找。
这就是你上面的代码不出来多重定义的原因。
[解决办法]
for循环里面的i的生命周期只是在循环内,
等同 以下语句:
int i =2;
{
int i =0;
.....
}
不过vc6的话lz这样写会报错
[解决办法]
4楼正解
[解决办法]
从vs10移植到vc6?vc6下只能按照1楼这样写,移植到2010下怎么可能有问题。。。除非你是从从vs10移植到vc6。。。。
[解决办法]
变量作用域的问题
[解决办法]
在vs2010编译通过
[解决办法]
正确的代码当然没有重复定义。
重复定义: 相同作用域内出现多个相同定义。