2017-04-19 15 views
9

Storage-class specifiers से: भंडारण अवधि और लिंकेज:स्टोरेज-क्लास विनिर्देशकों का उपयोग दो स्वतंत्र गुणों को निर्धारित करने के लिए क्यों किया जाता है?

भंडारण स्तरीय विनिर्देशक नाम वे घोषित के दो स्वतंत्र गुण निर्धारण करते हैं।

तो, उदाहरण के लिए, जब static कीवर्ड (जो है भंडारण वर्ग वैसे भी स्थिर होता है) वैश्विक चर और कार्यों पर प्रयोग किया जाता है यह आंतरिक-लिंकेज के लिए अपने संबंध तय करता है। जब कार्यों के अंदर चर पर उपयोग किया जाता है (जिसमें कोई संबंध नहीं है) - यह उनकी स्टोरेज क्लास को स्थैतिक पर सेट करता है।

मेरा प्रश्न है: दोनों चीजों के लिए एक ही विनिर्देशक क्यों उपयोग किया जाता है?

+0

संभावना है क्योंकि दो स्वतंत्र गुणों को शायद ही कभी स्वतंत्र रूप से उपयोग करने की आवश्यकता है। अंत में, यह पूछ रहा है कि सी इस तरह क्यों किया गया था। - मुझे सादगी के लिए संदेह है और यह उस समय की कला से मेल खाता है। – chux

+0

@chux, क्या आप विस्तृत कर सकते हैं? मुझे समझ में नहीं आता है कि क्यों "दो स्वतंत्र गुणों को शायद ही कभी स्वतंत्र रूप से इस्तेमाल किया जाना चाहिए।" मैं स्थैतिक भंडारण और आंतरिक संबंध के बीच संबंध को समझ नहीं पा रहा हूं और क्यों दोनों कसकर बंधे हैं .. –

+0

उम्मीद है कि नीचे दिए गए उत्तर पर्याप्त होंगे। – chux

उत्तर

8

कारण अधिकतर ऐतिहासिक है: लिंकेज सी भाषा के डिजाइन में बाद में विचार के रूप में आया था। प्रारंभिक संस्करणों में आप कई बार के रूप वैश्विक चर redeclare सकता है के रूप में आप चाहते हैं, और लिंकर आप के लिए इन सभी घोषणाओं विलय होगा:

रिची के मूल इरादा, FORTRAN आम घोषणाओं पर सी के नियमों मॉडल करने के लिए सिद्धांत है कि पर किया गया था फोरट्रान को संभालने वाली कोई भी मशीन सी के लिए तैयार होगी। आम-ब्लॉक मॉडल में, एक सार्वजनिक चर कई बार घोषित किया जा सकता है; समान घोषणाएं लिंकर द्वारा विलय कर दी गई हैं। (source)

एक भी घोषणा की वर्तमान शासन, बाद आया extern कुंजीशब्द के साथ। उस समय सी कोड का एक शरीर पिछड़ा संगतता महत्वपूर्ण बनाने के लिए काफी महत्वपूर्ण था। यही कारण है कि भाषा डिजाइनरों ने लिंकिंग को संभालने के लिए एक नया कीवर्ड शुरू करने से रोका, इसके बजाय static का पुन: उपयोग किया।

+2

आह 'COMMON' कथन - shuddder। – chux

संबंधित मुद्दे

 संबंधित मुद्दे