Sto scrivendo una libreria C (condivisa). È iniziato come una singola unità di traduzione, nella quale potevo definire un paio di variabili globali static
, da nascondere da moduli esterni.Come nascondere una variabile globale, che è visibile su più file?
Ora che la libreria è cresciuta, voglio suddividere il modulo in un paio di file sorgente più piccoli. Il problema è che ora ho due opzioni per le variabili globali citati:
avere copie private a ogni file sorgente e in qualche modo di sincronizzazione i loro valori attraverso chiamate di funzione - questo otterrà molto brutto molto veloce.
Rimuovere la definizione
static
, in modo che le variabili siano condivise tra tutte le unità di traduzione utilizzandoextern
- ma ora il codice dell'applicazione collegato alla libreria può accedere a tali globali, se la dichiarazione richiesta viene effettuata lì.
Quindi, c'è un modo semplice per rendere condivisa la variabile globale privata su più unità di traduzione specifiche?
Cosa ti fa pensare che l'OP stia utilizzando GCC e che la portabilità del codice non sia desiderata? – Lundin
Ho detto che è un'estensione GCC. Ho aggiunto un PS ripetendolo. –
Sì, l'hai fatto. Ho commentato dal momento che non penso che Stack Overflow dovrebbe essere un forum GCC, tutti sembrano assumere implicitamente GCC al giorno d'oggi. – Lundin