In C, spesso / a volte (come questione di stile) si utilizza una variabile% scope di tipo file-scope dove si usa una variabile membro privata della classe in C ++. Quando si ridimensiona a programmi con multithreading, è sufficiente aggiungere static
in C11 o l'estensione long support thread_local
si adatta bene. So che puoi fare esattamente lo stesso in C come in C ++ mettendo tutto all'interno di __thread
e creando un set di funzioni che accetta un puntatore a quel struct
come primo argomento. Alcune librerie lo fanno ampiamente. Ma il mio stile personale è di mantenere un struct
il più piccolo possibile, se necessario.
Spesso leggo o sento alcune persone che sostengono che le variabili "globali" sono così dannose. Seguo le loro ragioni e la maggior parte della loro argomentazione sembra essere correlata alle variabili globali struct
in termini C. Quello che dicono è certamente vero. A volte uso 1 o 2% di% di dichiarazioni dichiarate di variabili nell'intero programma quando semplifica molto le cose e quando è facile tenerne traccia, ma andare più avanti renderà imprevedibile un programma.
Che dire delle variabili extern
? Hanno ancora lo stesso problema delle variabili globali "reali"? Forse non devo nemmeno fare questa domanda e andare avanti se penso che quello che sto facendo sia giusto, ma oggi ho visto un altro "variabili globali sono BAD" tipo di post, e finalmente sono arrivato qui pensando che forse questo è un diritto posto per questo tipo di domanda. Qual è il tuo pensiero?
Questa domanda non è un duplicato di questo perché questa domanda richiede extern
e static
variabili non locali mentre l'altra domanda riguarda variabili scope-scope e scope-block extern
.