Ich benutze C (nicht C++) und bin unsicher, wie man die Verwendung globaler Variablen vermeidet.C - Programmstruktur (Vermeiden von globalen Variablen, Includes usw.)
Ich habe einen ziemlich guten Zugriff auf C, seine Syntax und wie man eine grundlegende Anwendung schreibt, aber ich bin mir nicht sicher über die richtige Art, das Programm zu strukturieren.
Wie vermeiden wirklich große Anwendungen die Verwendung globaler Variablen? Ich bin mir ziemlich sicher, dass es immer einige geben muss, aber für große Spiele und andere Anwendungen, die in C geschrieben sind, was ist der beste Weg, es zu tun?
Gibt es eine gute Open-Source-Software, die ausschließlich in C geschrieben ist und die ich mir ansehen kann? Ich kann mir nichts Kopfrechnen vorstellen, die meisten scheinen in C++ zu sein.
Danke.
bearbeiten
Hier ist ein Beispiel dafür, wo ich eine globale Variable in einer einfachen API Einhaken Anwendung verwenden würde, die in einem anderen Prozess nur eine DLL ist.
Diese Anwendung hakt API-Funktionen, die in einer anderen Anwendung verwandt werden. Dies geschieht, indem WriteProcessMemory den Aufruf des Originals überschreibt und stattdessen einen Aufruf an meine DLL aufruft.
Wenn jedoch un die API-Funktion hooking, muss ich den ursprünglichen Speicher/Maschinencode zurückschreiben.
Also, ich muss ein einfaches Byte-Array für diesen Maschinencode, eine für jede API-Funktion, die süchtig ist, und es gibt eine Menge.
// 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);
Entschuldigung, wenn das verwirrend ist.
Können Sie ein konkretes Beispiel geben? Wofür brauchen Sie möglicherweise eine globale Variable? In 99% der Fälle ist es nicht notwendig global zu sein. –