Por que a classe de armazenamento 'externo' funciona de maneira diferente nas funções?
O trecho a seguir funciona bem
extern int i;
int i;
int main(){
return 0;
}
Aqui o que eu obtive é: 'i' é declarado e depois definido. Como existe apenas uma definição, isso é perfeitamente adequado.
int main(){
extern int i;
int i;
return 0;
}
Agora, o exemplo acima fornece o seguinte erro
new.cpp: In function ‘int main()’:
new.cpp:5:6: error: redeclaration of ‘int i’
int i;
^
new.cpp:4:13: note: previous declaration ‘int i’
extern int i;
Qual é o problema aqui? Aqui também há uma definição única de 'i'.