मूल के & आर को int
तर्क के साथ पी .155 पर परिभाषित किया गया। पुस्तक में प्रस्तुत कोड पर unsigned int
के साथ काम करेगा (यह >0
का उपयोग करता है, लेकिन लूप को शून्य से नीचे कभी नहीं जाने के लिए लिखा जाता है)।
size_t
C89 (एएनएसआई सी) में sizeof()
के प्रकार के रूप में बाद में पेश किया गया। चूंकि इस सुविधा को स्मृति आवंटन को सुसंगत बनाने के लिए विशेष रूप से पेश किया गया था, स्मृति प्रबंधन फ़ंक्शन और स्ट्रिंग फ़ंक्शंस तदनुसार अपडेट किए गए थे। लेकिन फ़ाइल I/O नहीं था: C89 में size_t
का उपयोग करने वाले एकमात्र फ़ाइल फ़ंक्शंस उन नए हैं सी 8 9 द्वारा पेश किए गए और के & आर में मौजूद नहीं थे जैसे कि उदाहरण के लिए fread()
/fwrite()
। हां, के & आर में इन फ़ंक्शन नहीं थे और फ़ाइल डिस्क्रिप्टर का उपयोग करके केवल (गैर पोर्टेबल) यूनिक्स पढ़ने/लिखने के कार्यों पर ब्लॉक ऑपरेशन के लिए निर्भर थे।
यह ध्यान दिया जाना चाहिए कि POSIX standard, जो यूनिक्स कार्यों सामंजस्य है, एएनएसआई सी मानक और issued late 1988 के समानांतर में विकसित किया गया था। इस मानक ने size_t
का उपयोग करने के लिए कई यूनिक्स फ़ंक्शंस को सुसंगत बनाया है ताकि read()
/write()
आजकल size_t
के साथ परिभाषित किए गए हैं। लेकिन इस तरह के fgets()
के रूप में सी मानक पुस्तकालय कार्यों के लिए, POSIX सी मानक (मानक के वर्तमान संस्करण के शब्द) को महत्व देता है:
इस संदर्भ पृष्ठ पर वर्णित कार्यक्षमता आईएसओ सी मानक के साथ गठबंधन किया है । यहां वर्णित आवश्यकताओं और आईएसओ सी मानक के बीच कोई भी संघर्ष अनजान है।
तो POSIX में भी, विडंबना यह fgets()
अभी भी अपनी ऐतिहासिक कश्मीर & आर int
से विरासत में मिली।
संपादित करें: अतिरिक्त पढ़ने
stdio।एच: यह हेडर K& आर के अध्याय 7 में सूचीबद्ध अधिकांश कार्यों को परिभाषित करता है और प्रोटोटाइप करता है। कुछ, यदि कोई हो, तो में & आर में पाए गए परिभाषाओं में परिवर्तन किए गए थे लेकिन कई नए फ़ंक्शन जोड़े गए हैं।
सी मानक पुस्तकालय में कोई स्थिरता नहीं है। कार्य समय के साथ विकसित हुआ है। 'fgets' पेश किए जाने पर 'size_t' अस्तित्व में नहीं था (बस मेरा अनुमान)। – user694733
https://groups.google.com/forum/#!topic/comp.std.c/FnENEIlCidg – artm
हिस्टोरिकल किशमिश। संभावित रूप से प्रारंभिक कार्यान्वयन (मानकीकरण से पहले) 'int' का उपयोग करने के लिए होता है और सी को मानकीकृत होने पर "संगतता" के लिए किया जाता है। और मैं * राय-आधारित * के रूप में बंद करने के लिए मतदान कर रहा हूं। –