C - la structure du programme (pour éviter les variables globales, comprend, etc.)

Je suis à l'aide de C (pas C++) et je n'en suis pas sûr pour éviter d'utiliser des variables globales.

J'ai un assez décent saisir sur C, sa syntaxe, et comment écrire une demande de base, mais je ne suis pas sûr de la bonne façon de structurer le programme.

Comment faire vraiment de grosses applications d'éviter l'utilisation de variables globales? Je suis assez sûr qu'il y aura toujours besoin d'être au moins pour certains, mais pour les gros jeux et d'autres applications écrites en C, quelle est la meilleure façon de le faire?

Est-il bon, le logiciel open-source écrit strictement en C que j'ai pu regarder? Je ne peux pas penser à tout en haut de ma tête, la plupart d'entre eux semblent être en C++.

Grâce.

Modifier

Voici un exemple de cas où je voudrais utiliser une variable globale dans une simple API hooking application, qui est juste une DLL à l'intérieur d'un autre processus.

Cette application, plus précisément, des crochets de fonctions de l'API utilisé dans une autre application. Il le fait en utilisant WriteProcessMemory de remplacer l'appel à l'original, et faire un appel de ma DLL.

Toutefois, lorsque de l'onuaccrochage de la fonction de l'API, j'ai à écrire de nouveau la mémoire d'origine/code machine.

Donc, j'ai besoin de maintenir un simple tableau d'octets pour que le code machine, une pour chaque fonction de l'API qui est accro, et il y en a beaucoup.

//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 );

Désolé si c'est confus.

  • Pouvez-vous donner un exemple précis? Que pensez-vous que vous pouvez avoir besoin d'une variable globale pour? 99% du temps, il n'a pas besoin d'être global.
InformationsquelleAutor guitar- | 2010-07-08