Sto usando C (non C++) e non so come evitare l'uso di variabili globali.C - struttura del programma (evitare variabili globali, include, ecc.)
Ho una presa abbastanza decente su C, la sua sintassi e come scrivere un'applicazione di base, ma non sono sicuro del modo corretto di strutturare il programma.
In che modo le applicazioni di grandi dimensioni evitano l'utilizzo di variabili globali? Sono abbastanza sicuro che ci sarà sempre bisogno di esserne almeno alcuni, ma per i grandi giochi e altre applicazioni scritte in C, qual è il modo migliore per farlo?
Esiste un buon software open source scritto rigorosamente in C che potrei esaminare? Non riesco a pensare a nessuno in cima alla mia testa, la maggior parte di loro sembra essere in C++.
Grazie.
Modifica
Ecco un esempio di dove avrei utilizzare una variabile globale in una semplice applicazione API di aggancio, che è solo un DLL all'interno di un altro processo.
Questa applicazione, in particolare, aggancia le funzioni API utilizzate in un'altra applicazione. Lo fa usando WriteProcessMemory per sovrascrivere la chiamata sull'originale, e fargli invece una chiamata alla mia DLL.
Tuttavia, quando un agganciando la funzione API, devo scrivere nuovamente il codice di memoria/macchina originale.
Quindi, ho bisogno di mantenere un semplice array di byte per quel codice macchina, uno per ogni funzione API che è agganciata, e ce ne sono molti.
// Global variable to store original assembly code (6 bytes)
BYTE g_MessageBoxA[6];
// Hook the API function
HookAPIFunction ("user32.dll", "MessageBoxA", MyNewFunction, g_MessageBoxA);
// Later on, unhook the function
UnHookAPIFunction ("user32.dll", "MessageBoxA", g_MessageBoxA);
Scusa se questo è confuso.
Può fare un esempio specifico? Per cosa pensi che potresti aver bisogno di una variabile globale? Il 99% delle volte non ha bisogno di essere globale. –