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
codice:
int a=4;
int main(){return 0;}
file.h
codice:
extern int a;