Я использую C (не C ++) и не знаю, как избежать использования глобальных переменных.
Я достаточно хорошо разбираюсь в C, его синтаксисе и способах написания базового приложения, но я не уверен в правильном способе структурирования программы.
Как действительно большие приложения избегают использования глобальных переменных? Я почти уверен, что всегда должно быть хоть что-то, но для больших игр и других приложений, написанных на C, какой лучший способ сделать это?
Есть ли какое-нибудь хорошее программное обеспечение с открытым исходным кодом, написанное строго на C, на которое я мог бы взглянуть? Я не могу думать ни о чём, кроме меня, большинство из них похоже на C ++.
Спасибо.
Редактировать
Вот пример, где я бы использовал глобальную переменную в простом приложении для перехвата API, которое является просто DLL внутри другого процесса.
Это приложение, в частности, перехватывает функции API, используемые в другом приложении. Это делается с помощью WriteProcessMemory, чтобы перезаписать вызов оригинала и сделать вместо этого вызов моей DLL.
Однако, когда un перехватывает функцию API, мне приходится записывать исходную память / машинный код.
Итак, мне нужно поддерживать простой байтовый массив для этого машинного кода, по одному для каждой перехваченной функции API, и их много.
// 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 );
Извините, если это сбивает с толку.