Warum funktioniert die Speicherklasse 'extern' in Funktionen anders?
Das folgende Snippet funktioniert gut
extern int i;
int i;
int main(){
return 0;
}
Hier habe ich, 'i' wird deklariert und dann definiert. Da es nur eine Definition gibt, ist das vollkommen in Ordnung.
int main(){
extern int i;
int i;
return 0;
}
Now, der obige gibt den folgenden Fehler
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;
Was ist das Problem hier? Auch hier gibt es nur eine Definition von 'i'.