Provo a risponderti...
L'utilizzo di extern per le variabili, è usata per indicare al compilatore che un riferimento ad una variabile presente in un altro file.
Il compilatore infatti non segnalerà errore é capisce che quel problema dovra essere risolto successivamente (tutto questo in fase di linking)dove verra poi allocata e inizializzata.
La variabile extern(secondo caso) in quel caso,permette di poter linkare del codice misto nel tuo progetto.
extern "C" {
void funz1(.......);
int funz2(......);
void funz3(..);
....;
....;
....;
}
Questo significa che i prototipi delle funzioni da te segnalati tra parentesi graffe ,verranno gestite come se fossero compilate e linkate dal linguaggio che hai specificato(C in questo caso),potendo cosi sfruttare delle librerie compilate in altri lunguaggi di programmazione..
Tu dovresti essere nel primo caso..
in esso é necessario introdurre nel file che verra utilizzato(system.h) ,una dichiarazione della variabile tramite la parola chiave prima discussa extern..
es
file.cpp
file.hcodice:int a=4; int main(){return 0;}
codice:extern int a;