मैं सी (सी ++ नहीं) का उपयोग कर रहा हूं और मुझे यकीन है कि वैश्विक चर का उपयोग करने से कैसे बचें।सी - प्रोग्राम संरचना (वैश्विक चर से बचने, आदि शामिल हैं)
मेरे पास सी, इसकी वाक्यविन्यास, और मूल अनुप्रयोग कैसे लिखना है, पर एक सुंदर सभ्य समझ है, लेकिन मुझे प्रोग्राम की संरचना करने का उचित तरीका सुनिश्चित नहीं है।
वैश्विक चर के उपयोग से वास्तव में बड़े एप्लिकेशन कैसे बचते हैं? मुझे पूरा यकीन है कि कम से कम कुछ होने की आवश्यकता होगी, लेकिन बड़े गेम और सी में लिखे गए अन्य अनुप्रयोगों के लिए, इसे करने का सबसे अच्छा तरीका क्या है?
क्या कोई अच्छा, ओपन-सोर्स सॉफ़्टवेयर सी में सख्ती से लिखा गया है जिसे मैं देख सकता हूं? मैं अपने सिर के ऊपर से किसी के बारे में नहीं सोच सकता, उनमें से ज्यादातर सी ++ में प्रतीत होते हैं।
धन्यवाद।
संपादित
यहाँ है जहाँ मैं एक सरल एपीआई hooking आवेदन है, जो किसी अन्य प्रक्रिया के अंदर सिर्फ एक DLL है में एक वैश्विक चर का प्रयोग करेंगे का एक उदाहरण है।
यह एप्लिकेशन, विशेष रूप से, अन्य अनुप्रयोगों में उपयोग किए जाने वाले एपीआई कार्यों को हुक करता है। यह कॉल को मूल पर ओवरराइट करने के लिए WriteProcessMemory का उपयोग करके करता है, और इसके बजाय इसे मेरे डीएलएल पर कॉल करता है।
हालांकि, un एपीआई फ़ंक्शन को हुक करने के लिए, मुझे मूल मेमोरी/मशीन कोड वापस लिखना होगा।
तो, मुझे उस मशीन कोड के लिए एक सरल बाइट सरणी बनाए रखने की आवश्यकता है, प्रत्येक एपीआई फ़ंक्शन के लिए एक है जो हुक किया गया है, और बहुत कुछ है।
// 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% समय, यह वैश्विक होने के लिए _need_ नहीं है। –