मेरी सफेद दाढ़ी पथपाकर और एक संत और गर्वित आवाज में बोल संकलन, मैं कहता हूँ:
पुराने दिनों में, जब FORTRAN और कोबोल शासन किया कंप्यूटिंग दुनिया, अपस्टार्ट भाषा सी को मौजूदा टूल चेन में फिट होना था। उन टूल चेन में लिंक-एडिटर्स (ए/के/एक लिंकर्स, ए/के/लोडर) और असेंबलर्स शामिल थे जो केवल छोटे 6-वर्ण प्रतीक (चर और फ़ंक्शन) नामों को संभाले थे।
उन उपकरण श्रृंखलाओं के लिए सी कंपाइलर्स को उस चरम पर नाटक करना पड़ा और फ़ंक्शन नाम कम थे जब उन्होंने लिंक-संपादकों द्वारा ऑब्जेक्ट फ़ाइलों को खपत करने के लिए लिखा था। वह बुरी खबर थी। अच्छी खबर यह थी कि सी प्रोग्राम के अंदर बहुत सारे प्रतीकों हैं जिन्हें ऑब्जेक्ट फ़ाइलों में दिखाने की आवश्यकता नहीं है।
उदाहरण के लिए, कार्यों के नाम ... उदा। "मुख्य" और "sqrt" ... ऑब्जेक्ट मॉड्यूल में दिखने की आवश्यकता है, इसलिए अन्य ऑब्जेक्ट मॉड्यूल से कोड उनका उपयोग कर सकता है। तो "बाहरी" शैली के वैश्विक चर के नाम भी थे। वे बाहरी नाम हैं।
लेकिन सी प्रोग्राम में अन्य सभी नाम, उदाहरण के लिए कार्यों के दायरे में चर के नाम, structs के सदस्यों के नाम, और आगे, इसे ऑब्जेक्ट मॉड्यूल में बनाने की आवश्यकता नहीं थी। जिन्हें "आंतरिक नाम" कहा जाता है।
तो, उदाहरण के लिए, यदि आप इन सी चर एक समारोह
int myFavoriteItem;
int myFavoriteThing;
भीतर हो सकता था और वह ठीक हो जाएगा। लेकिन आप उन्हें बाहरी चर के रूप में घोषित कर सका, इसलिए जैसे:
extern int myFavoriteItem;
extern int myFavoriteThing;
कुछ प्रणालियों वस्तु फ़ाइलों के लिए बाहर इन नामों लिखते थे जैसे कि वे छह पत्र लंबे थे (क्योंकि वस्तु फ़ाइलों क्या से कोई लेना देना नहीं पता था लंबे नाम)। फिर वे ऑब्जेक्ट फ़ाइल को देखेंगे जैसे कि उन्हें इस तरह घोषित किया गया था।
extern int myFavo;
extern int myFavo;
वे डुप्लिकेट घोषणाएं होंगी। सी कंपाइलर को इस तरह की चीज को पकड़ने और किसी ऑब्जेक्ट फ़ाइल में डुप्लिकेट घोषणा लिखने के बजाय त्रुटि को फेंकना आवश्यक था। यह प्रोग्रामर के लिए एक बड़ी मदद थी: ऑब्जेक्ट फ़ाइलों में डुप्लिकेट घोषणाएं वास्तव में अस्पष्ट लिंक-एडिटर त्रुटि संदेश उत्पन्न हुईं।
आपके द्वारा उद्धृत मार्ग निर्दिष्ट करता है कि कंपाइलर्स को आंतरिक नाम के कम से कम 31 वर्ण और बाहरी नाम के 6 को पहचानना होगा। आधुनिक कंपाइलर्स और टूलचेन में अब अलग-अलग नाम-लंबाई सीमाएं नहीं हैं।
कौन सी "सी पुस्तक"? क्या इसे वास्तव में "एएनएसआई सी" कहा जाता है? – asteri
@ जेफ "द सी बुक" नामक एक पुस्तक है - http://www.amazon.com/The-Book- विशेषता- मानक- निर्देश/डीपी/0201544334 मुझे संदेह है कि यह ओपी का जिक्र है। –
यह सी 8 9/सी 9 0 मानक सीमा है; सी 99 मानक उन सीमाओं को बढ़ाता है (_63 आंतरिक पहचानकर्ता या मैक्रो नाम में महत्वपूर्ण प्रारंभिक वर्ण ... बाहरी पहचानकर्ता में महत्वपूर्ण प्रारंभिक वर्ण ..._) नामों में सार्वभौमिक चरित्र नामों के बारे में कुछ चेतावनियों के साथ। सी2011 के लिए सीमाएं समान हैं। ध्यान दें कि सी 99 मानक को केस-सेंसिटीविटी की आवश्यकता होती है जहां मूल सी 8 9 मानक नहीं था। –