Originariamente inviato da akiross
@oregon & infinitejustice
ok mi e' chiaro cosa si intendeva per portabilita'
Mai parlato di portabilita' ... semmai di riduzione dell'accoppiamento.

... nel loro modulo definisco una globale (e non ho detto una globale esterna), quella globale rimane comunque all'interno del modulo asd.c, e pertanto la scatola nera e' mantenuta.
Se nel modulo hai piu' funzioni che sfruttano la variabile definita in questo modo e se consideri che *ogni* funzione dovrebbe essere una "black box" allora il problema persiste.
Se nel modulo hai *una sola funzione* allora non ha senso definire la variabile esternamente ...

ovvio che se poi ci metto un extern davanti cambia tutto... la variabile e' visibile ovunque e i casini saltano fuori piu' facilmente.
Da cio' deduco che tu sia d'accordo almeno nel non usare in tal modo le globali.

Riguardo a cio' che dice oregon: e' vero che le variabili non sono necessarie, ma neanche locali lo sono Voglio dire che c'e' gente che scrive programmi (e che magari funzionano perfettamente) solo usando le globali.
Mai negato che non si possa fare.
Si perde in "manutenibilita'" perche' la prima volta che c'e' un bug, le globali (soprattutto in ambiente multithreading) ti fanno impazzire nel trovare la causa ...


In definitiva ti sconsiglio l'uso di variabili condivise a qualsiasi livello ...