关于声明与定义的有关问题

关于声明与定义的问题void main(){extern int aint a1couta} error C2086: a : redefinition在vc6

关于声明与定义的问题
void main()
{
extern int a;
int a=1;
cout<<a;
}

 error C2086: 'a' : redefinition


在vc6中,先声明,后定义,为什么会出现重复定义的错误?那又该如何使用定义与声明呢?
[解决办法]


extern int a;
int main()
{
int a=1;
return 0;
}