저는 C (C++이 아닙니다)를 사용하고 있으며 전역 변수 사용을 피하는 방법을 확신하지 못합니다.C - 프로그램 구조 (전역 변수, 포함 안함 등)
저는 C, 구문 및 기본 응용 프로그램을 작성하는 방법에 대해 꽤 알맞은 이해를 가지고 있지만 프로그램을 구조화하는 올바른 방법은 확실하지 않습니다.
어떻게 큰 응용 프로그램이 전역 변수를 사용하지 않도록합니까? 나는 항상 적어도 일부는 필요 하겠지만, C로 작성된 큰 게임과 다른 응용 프로그램의 경우, 그것을 수행하는 가장 좋은 방법은 무엇일까요?
내가 볼 수있는 C 언어로 작성된 훌륭한 오픈 소스 소프트웨어가 있습니까? 내 머리 꼭대기에서 나는 생각할 수 없다. 대부분 C++ 인 것 같다.
감사합니다.
편집
는 여기에 내가 다른 프로세스 내부 단지 DLL입니다 간단한 API 후킹 응용 프로그램에서 전역 변수를 사용하는 것이 경우의 예입니다.
이 응용 프로그램은 특히 다른 응용 프로그램에서 사용되는 API 함수를 후크합니다. WriteProcessMemory를 사용하여 호출을 원본으로 덮어 쓰고 대신 내 DLL을 호출하여이 작업을 수행합니다.
그러나 un API 함수를 후킹하면 원래 메모리/기계 코드를 다시 써야합니다.
그래서, 나는 그 기계 코드를 위해 간단한 바이트 배열을 유지할 필요가있다. 하나는 hook 된 각 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);
죄송합니다.
구체적인 예를 들려 줄 수 있습니까? 글로벌 변수가 필요한 이유는 무엇이라고 생각하십니까? 99 %의 시간은 글로벌 일 필요는 없습니다. –