Używam C (nie C++) i nie jestem pewien, jak unikać zmiennych globalnych.C - struktura programu (unikanie zmiennych globalnych, obejmuje, itp.)
Mam całkiem przyzwoity chwyt na temat C, jego składni i jak napisać podstawową aplikację, ale nie jestem pewien co do właściwego sposobu struktury programu.
W jaki sposób naprawdę duże aplikacje unikają stosowania zmiennych globalnych? Jestem pewien, że zawsze będą potrzebne przynajmniej niektóre, ale w przypadku dużych gier i innych aplikacji napisanych w C, jaki jest najlepszy sposób na zrobienie tego?
Czy jest jakieś dobre oprogramowanie o otwartym kodzie źródłowym napisane w C, na które mogłem spojrzeć? Nie wyobrażam sobie, żebym był z głowy, większość z nich wydaje się być w C++.
Dzięki.
Edit
Oto przykład, gdzie chciałbym użyć zmiennej globalnej w prostej aplikacji API hakowym, który jest po prostu DLL wewnątrz innego procesu.
Ta aplikacja, w szczególności, przechwytuje funkcje API używane w innej aplikacji. Robi to za pomocą WriteProcessMemory, aby nadpisać połączenie do oryginału, i zamiast tego wywoła to wywołanie do mojej biblioteki DLL.
Jednakże, gdy un zahaczenie funkcji API, muszę zapisać oryginalny kod pamięci/komputera.
Potrzebuję więc tablicy tablic prostych dla tego kodu maszynowego, po jednym dla każdej funkcji API, która jest podłączona, i jest wiele.
// 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);
Przepraszam, jeśli to jest mylące.
Czy możesz podać konkretny przykład? Jak myślisz, do czego może być potrzebna zmienna globalna? W 99% przypadków nie musi mieć globalnego charakteru. –