मैं कुछ समय से सी में विकसित हो रहा हूं, ऑब्जेक्ट-उन्मुख भाषाओं जैसे सी ++ और जावा से आ रहा हूं, और fread()
और strtok()
जैसे मानक लाइब्रेरी फ़ंक्शंस का उपयोग करते समय, मुझे आश्चर्य हुआ: ये फ़ंक्शन संबंधित चर को संग्रहीत करने के बारे में कैसे जाते हैं उनके राज्य में?सी पुस्तकालय राज्य चर कैसे स्टोर करते हैं?
उदाहरण के लिए, strtok()
बाद के कॉल के लिए अलग-अलग व्यवहार करता है, और fread()
फ़ाइल में आपकी स्थिति का ट्रैक रखता है। इस जानकारी को कहीं भी संग्रहीत किया जाना चाहिए, और किसी ऑब्जेक्ट-उन्मुख भाषा में अवांछित संशोधन से इन मानों की रक्षा के लिए private
या protected
जैसे दायरे की संरचनाएं हैं, लेकिन जहां तक मुझे समझ में आता है कि सी में ये नहीं है।
तो फिर, वे सुरक्षित रूप से कैसे संग्रहीत किए जाते हैं? या वे वास्तव में कहीं भी वैश्विक और संशोधित हैं? सवाल तब उत्पन्न हुआ जब मैं उपयोगिता कार्यों के साथ एक हेडर फ़ाइल लिख रहा था जिसे समान राज्य जानकारी स्टोर करने की आवश्यकता थी। सी में इस तरह की चीज करने का "सही" तरीका क्या है, और यह मौजूदा पुस्तकालयों में कैसे संभाला जाता है?
'क्योंकि यह एक' FILE' struct जो सभी जानकारी 'fread' द्वारा आवश्यक संग्रहीत करता है लेता है fread', कॉल के बीच राज्य को बचाने के लिए की जरूरत नहीं है। –