Non programmo in C/C++, bensì in Delphi, ma suppongo che le regole siano sempre le stesse.
In genere, è bene evitare variabili globali per via della dispersione che creano all'interno del codice, anche se ovviamente il grado di rischio dipende sostanzialmente dall'accortezza dello sviluppatore.
Usando variabili globali puoi incappare in alcune casistiche che sarebbero da evitare, come ad esempio un "name clashing" con una variabile locale (due variabili con lo stesso nome) che ti porta a riflettere su quale delle due è prioritaria, oppure in fase di debugging potresti avere problemi in quanto, esaminando il valore della variabile globale, non lo trovi come dovrebbe essere ma non sai quale procedura o funzione ha portato a quel risultato.
Sono tutte problematiche che si eludono facilmente seguendo un approccio più OOP, incapsulando e facendo in modo che ogni variabile o campo che sia venga modificato solo dalle routine che ne hanno l'autorità (seguendo la logica del programma) o comunque in modo controllato e facilmente tracciabile.
Ciao!![]()