Per quanto riguarda l'uso di extern ci siamo...
Non siamo però in accordo sul concetto di linkage....
Se dichiari una variabile globale in un file .c o .cpp. quella variabile ha linkage interno visto che nessun altro modulo sa che esiste.
Per me una variabile globale ha linkage esterno perchè può essere utilizzata anche in altri moduli e non solo nel modulo in cui è dichiarato... il linkage è una proprietà di una variabile o di una funzione (linkage interno se l'entità è visibile solo nello stesso modulo in cui è dichiarata, linkage esterno se visibile anche in altri moduli)
Io ho dedotto tutto questo leggendo sul mio libro e su questo sito... Prova a dargli un'occhiata anche tu!