¿Por qué la clase de almacenamiento 'externo' funciona de manera diferente en las funciones?
El siguiente fragmento funciona bien
extern int i;
int i;
int main(){
return 0;
}
Aquí lo que obtuve es, 'i' se declara y luego se define. Dado que solo hay una definición, eso está perfectamente bien.
int main(){
extern int i;
int i;
return 0;
}
Ahora, el anterior da el siguiente error
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;
¿Cuál es el problema aquí? Aquí también hay una definición única de 'i'.