Estoy usando C (no C++) y no estoy seguro de cómo evitar el uso de variables globales.C - estructura del programa (evitando variables globales, incluye, etc.)
Tengo una comprensión bastante decente de C, su sintaxis y cómo escribir una aplicación básica, pero no estoy seguro de la forma correcta de estructurar el programa.
¿Cómo las aplicaciones realmente grandes evitan el uso de variables globales? Estoy bastante seguro de que siempre tendrá que haber al menos algunos, pero para juegos grandes y otras aplicaciones escritas en C, ¿cuál es la mejor manera de hacerlo?
¿Hay algún buen software de código abierto escrito estrictamente en C que pueda ver? No puedo pensar en ninguno en la cabeza, la mayoría de ellos parecen estar en C++.
Gracias.
Editar
He aquí un ejemplo en el que me gustaría utilizar una variable global en una simple aplicación de la API de enganche, que es sólo una DLL dentro de otro proceso.
Esta aplicación, específicamente, engancha funciones API utilizadas en otra aplicación. Lo hace mediante el uso de WriteProcessMemory para sobrescribir la llamada al original y convertirlo en una llamada a mi DLL.
Sin embargo, cuando un conectando la función API, tengo que volver a escribir el código de la memoria/máquina original.
Por lo tanto, necesito mantener una matriz de bytes simple para ese código de máquina, una para cada función de API enganchada, y hay muchas.
// 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);
Lo siento si eso es confuso.
¿Puedes dar un ejemplo específico? ¿Para qué crees que necesitarás una variable global? 99% de las veces, no necesita ser global. –