निर्देश शामिल करें: Difference between revisions
(Created page with "{{short description|Type of file in computer programming}} कई प्रोग्रामिंग भाषा और अन्य कंप्यूटर फाइ...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Type of file in computer programming}} | {{short description|Type of file in computer programming}} | ||
कई [[प्रोग्रामिंग | कई [[प्रोग्रामिंग भाषाओं]] और अन्य कंप्यूटर फ़ाइलों में एक निर्देश होता है, जिसे प्रायः समावेशन (कभी-कभी प्रतिलिपि या आयात) कहा जाता है, जो निर्दिष्ट फ़ाइल की सामग्री को मूल फ़ाइल में डालने का कारण बनता है। इन [[समावेशित]] फाइलों को कॉपीबुक या [[हेडर फाइल]] कहा जाता है। वे प्रायः प्रोग्राम डेटा के भौतिक लेआउट, प्रक्रियात्मक कोड के टुकड़े, और / या आगे की घोषणाओं को [[संपुटीकरण]] को बढ़ावा देने और कोड या डेटा के पुन: उपयोग को परिभाषित करने के लिए उपयोग किए जाते हैं। | ||
== हैडर फ़ाइलें == | == हैडर फ़ाइलें == | ||
[[कंप्यूटर प्रोग्रामिंग]] में, एक हेडर फाइल एक फाइल है जो प्रोग्रामर को प्रोग्राम के स्रोत कोड के कुछ तत्वों को पुन: प्रयोज्य फाइलों में अलग करने की अनुमति देती है। शीर्षलेख फ़ाइलों में | [[कंप्यूटर प्रोग्रामिंग]] में, एक हेडर फाइल एक फाइल है जो प्रोग्रामर को प्रोग्राम के स्रोत कोड के कुछ तत्वों को पुन: प्रयोज्य फाइलों में अलग करने की अनुमति देती है। शीर्षलेख फ़ाइलों में सामान्यतः [[कक्षा (कंप्यूटर विज्ञान)|कक्षाओं(कंप्यूटर विज्ञान)]] ईएस, [[सबरूटीन|उपनेमिका]], [[चर (कंप्यूटर विज्ञान)]] और अन्य [[पहचानकर्ता]]ओं की आगे की घोषणाएं होती हैं। प्रोग्रामर जो एक से अधिक स्रोत फ़ाइल में मानकीकृत पहचानकर्ताओं की घोषणा करना चाहते हैं, वे ऐसे पहचानकर्ताओं को एक ही हेडर फ़ाइल में रख सकते हैं, जो हेडर सामग्री की आवश्यकता होने पर अन्य कोड सम्मिलित कर सकते हैं। यह हेडर में अंतराफलक को कार्यान्वयन से अलग रखने के लिए है। <ref> | ||
<ref> | |||
{{cite web | {{cite web | ||
| accessdate = 2013-05-07 | | accessdate = 2013-05-07 | ||
Line 13: | Line 12: | ||
| url = http://accu.org/index.php/journals/269 | | url = http://accu.org/index.php/journals/269 | ||
}} | }} | ||
</ref> | </ref> | ||
कुछ हाल ही में संकलित भाषाएँ (जैसे | [[C मानक पुस्तकालय]] और [[C ++ मानक पुस्तकालय]] पारंपरिक रूप से हेडर फाइलों में अपने मानक कार्यों की घोषणा करते हैं। | ||
कुछ हाल ही में बनाई गई संकलित भाषाएँ (जैसे जावा, C #) आगे की घोषणाओं का उपयोग नहीं करती हैं; पहचानकर्ताओं को स्वचालित रूप से स्रोत फ़ाइलों से पहचाना जाता है और गतिशील पुस्तकालय प्रतीकों से सीधे पढ़ा जाता है। इसका मतलब है कि हेडर फाइलों की जरूरत नहीं है। | |||
== उद्देश्य == | == उद्देश्य == | ||
<code> | <code>समावेशन</code>निर्देश कोड के पुस्तकालय (कंप्यूटिंग) को विकसित करने की अनुमति देता है जो मदद करता है: | ||
* सुनिश्चित करें कि हर कोई एक कार्यक्रम के दौरान डेटा लेआउट परिभाषा या प्रक्रियात्मक कोड के समान संस्करण का उपयोग करता है, | * सुनिश्चित करें कि हर कोई एक कार्यक्रम के दौरान डेटा लेआउट परिभाषा या प्रक्रियात्मक कोड के समान संस्करण का उपयोग करता है, | ||
* आसानी से | * आसानी से प्रति निर्देश देना जहां सिस्टम में घटकों का उपयोग किया जाता है, | ||
* जरूरत पड़ने पर आसानी से प्रोग्राम बदलें (केवल एक फाइल को संपादित किया जाना चाहिए), और | * जरूरत पड़ने पर आसानी से प्रोग्राम बदलें (केवल एक फाइल को संपादित किया जाना चाहिए), और | ||
* डेटा लेआउट का पुन: उपयोग करके समय बचाएं। | * डेटा लेआउट का पुन: उपयोग करके समय बचाएं। | ||
Line 27: | Line 28: | ||
=== उदाहरण === | === उदाहरण === | ||
एक उदाहरण स्थिति जो एक | एक उदाहरण स्थिति जो एक समावेशित निर्देश के उपयोग से लाभान्वित होती है, जब किसी भिन्न फ़ाइल में फ़ंक्शंस का संदर्भ दिया जाता है। मान लीजिए कि कुछ [[सी (प्रोग्रामिंग भाषा)|C(प्रोग्रामिंग भाषा)]] स्रोत फ़ाइल है जिसमें फलन ऐड है, जिसे पहली बार इसके बाहरी अस्तित्व और प्रकार (एक [[फ़ंक्शन प्रोटोटाइप|फलन]] प्रतिमान के साथ) की घोषणा करके दूसरी फ़ाइल में संदर्भित किया जाता है: | ||
<वाक्यविन्यास लैंग = सी> | <वाक्यविन्यास लैंग = सी> | ||
इंट ऐड (इंट, इंट); | इंट ऐड (इंट, इंट); | ||
Line 37: | Line 39: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
इस दृष्टिकोण का एक | इस दृष्टिकोण का एक अवगुण यह है कि फलन प्रतिमान फलन का उपयोग करने वाली सभी फ़ाइलों में उपस्थित होना चाहिए। एक और अवगुण यह है कि यदि रिटर्न प्रकार या फलन के तर्क बदल दिए जाते हैं, तो इन सभी प्रोटोटाइपों को अद्यतन करने की आवश्यकता होगी। प्रतिमान को एक सिंगल, अलग फाइल में रखने से इन मुद्दों से बचा जा सकता है। प्रतिमान मानते हुए फ़ाइल add.h में ले जाया गया है, तब दूसरी स्रोत फ़ाइल बन सकती है: | ||
<वाक्यविन्यास लैंग = सी> | <वाक्यविन्यास लैंग = सी> | ||
# | #सम्मिलित ऐड.एच | ||
इंट ट्रिपल (इंट एक्स) | इंट ट्रिपल (इंट एक्स) | ||
Line 47: | Line 49: | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
अब, हर बार कोड संकलित किया जाता है, नवीनतम | अब, हर बार जब कोड संकलित किया जाता है, नवीनतम फलन प्रतिमान में <code>add.h</code> संभावित त्रुटियों से बचने के लिए उनका उपयोग करते हुए फाइलों में सम्मिलित किया जाएगा। | ||
== भाषा समर्थन == | == भाषा समर्थन == | ||
=== | === C/C++ === | ||
C (प्रोग्रामिंग भाषा) और C++ प्रोग्रामिंग भाषाओं में, <code>#include</code> निर्देश (प्रोग्रामिंग) [[संकलक]] को उस पंक्ति को नामित स्रोत फ़ाइल की सामग्री के पूरे | C (प्रोग्रामिंग भाषा) और C++ प्रोग्रामिंग भाषाओं में, <code>#include</code> निर्देश (प्रोग्रामिंग) [[संकलक]] को उस पंक्ति को नामित स्रोत फ़ाइल की सामग्री के पूरे पाठ्य भाग के साथ बदलने का कारण बनता है (यदि उद्धरण में सम्मिलित है:) या नामित हेडर (यदि कोण कोष्ठक में सम्मिलित है: <>);<ref>C11 standard, 6.10.2 Source file inclusion, pp. 164–165</ref> ध्यान दें कि शीर्षलेख को स्रोत फ़ाइल होने की आवश्यकता नहीं है।<ref>C11 standard, 7.1.2 Standard headers, p. 181, footnote 182: "A header is not necessarily a source file, nor are the <code><</code> and <code>></code> delimited sequences in header names necessarily valid source file names.</ref> कार्यान्वयन-परिभाषित नेस्टिंग सीमा तक, इन सम्मिलित सामग्रियों पर समावेशन पुनरावर्ती रूप से जारी रहता है। शीर्षलेखों के पास फ़ाइलों से संबंधित नामों की आवश्यकता नहीं है: C++ मानक शीर्षलेखों में सामान्यतः वेक्टर जैसे शब्दों के साथ पहचाने जाते हैं इसलिए<code>#include <vector></code>, जबकि C मानक हेडर में ".h" विस्तारण के साथ फ़ाइल नाम के रूप में पहचानकर्ता होते हैं, जैसे कि <code>#include <stdio.h></code>. एक स्रोत फ़ाइल कोई भी फ़ाइल हो सकती है, किसी भी रूप के नाम के साथ, लेकिन सामान्यतः इसे .h विस्तारण के साथ नामित किया जाता है और इसे हेडर फ़ाइल (कभी-कभी .hpp या .hh C++ हेडर को अलग करने के लिए) कहा जाता है, हालाँकि .c, . cc, और .cpp विस्तारण भी सम्मिलित हो सकते हैं (विशेष रूप से [[एकल संकलन इकाई]] तकनीक में), और कभी-कभी अन्य विस्तारण का उपयोग किया जाता है। | ||
समावेशित निर्देश के ये दो रूप यह निर्धारित कर सकते हैं कि कार्यान्वयन-परिभाषित तरीके से किस हेडर या स्रोत फ़ाइल को सम्मिलित किया जाए। C++ एक सामान्य उद्देश्य, केस-संवेदी, फ्री-फ़ॉर्म प्रोग्रामिंग भाषा है जो ऑब्जेक्ट-ओरिएंटेड, प्रक्रियात्मक और सामान्य प्रोग्रामिंग का समर्थन करती है। व्यवहार में, सामान्यतः यह किया जाता है कि कोण-कोष्ठक एक मानक सिस्टम निर्देशिका (या निर्देशिकाओं के सेट) में स्रोत फ़ाइलों की खोज करता है, और फिर स्थानीय या प्रोजेक्ट-विशिष्ट पथों में स्रोत फ़ाइलों की खोज करता है (कमांड लाइन पर निर्दिष्ट, एक पर्यावरण चर में, या [[मेकफाइल]] या अन्य बिल्ड फ़ाइल में), जबकि उद्धरण के साथ फॉर्म मानक सिस्टम निर्देशिका में नहीं खोजता है, केवल स्थानीय या प्रोजेक्ट-विशिष्ट पथों में खोज करता है।<ref>{{cite web | url=http://docs.freebsd.org/info/cpp/cpp.pdf | title=The C Preprocessor | date=July 1992 | access-date=19 February 2014 | archive-url=https://web.archive.org/web/20120904041038/http://docs.freebsd.org/info/cpp/cpp.pdf | archive-date=4 September 2012 | url-status=dead | last=Stallman | first=Richard M. | author-link=Richard Stallman}}</ref> यदि कोई टकराव नहीं होता है, तो कोण-कोष्ठक प्रपत्र का उपयोग परियोजना-विशिष्ट सम्मिलित निर्दिष्ट करने के लिए भी किया जा सकता है, लेकिन इसे खराब रूप माना जाता है। तथ्य यह है कि शीर्षलेखों को फाइलों से मेल खाने की आवश्यकता नहीं है, मुख्य रूप से एक कार्यान्वयन तकनीकीता है, और इसका उपयोग C++ मानक शीर्षलेखों सहित .h विस्तारण को छोड़ने के लिए किया जाता है; सामान्य उपयोग में, हेडर का अर्थ है हेडर फ़ाइल। | |||
उदाहरण के लिए: | उदाहरण के लिए: | ||
<वाक्यविन्यास लैंग = सीपीपी> | <वाक्यविन्यास लैंग = सीपीपी> | ||
# | #सम्मिलित <stdio.h> // मानक हेडर 'stdio.h' (शायद एक फ़ाइल 'stdio.h') की सामग्री सम्मिलित करें। | ||
# | #सम्मिलित <वेक्टर> // मानक हेडर 'वेक्टर' की सामग्री सम्मिलित करें (शायद एक फ़ाइल 'वेक्टर.एच')। | ||
#include user_defined.h // फ़ाइल 'user_defined.h' की सामग्री | #include user_defined.h // फ़ाइल 'user_defined.h' की सामग्री सम्मिलित करें। | ||
</वाक्यविन्यास हाइलाइट> | </वाक्यविन्यास हाइलाइट> | ||
Cऔर C++ में, दो (या अधिक) फ़ाइलों में एक ही तीसरी फ़ाइल सम्मिलित होने पर समस्याओं का सामना करना पड़ सकता है। एक समाधान यह है कि किसी भी अन्य फ़ाइलों को सम्मिलित करने से फ़ाइलों को सम्मिलित करने से बचें, संभवतः प्रोग्रामर को मैन्युअल रूप से अतिरिक्त जोड़ने के लिए मूल फ़ाइल में निर्देश सम्मिलित करने की आवश्यकता होती है। एक अन्य समाधान का उपयोग गार्ड सम्मिलित करना है।<ref>{{citation | |||
| last=Pike | first=Rob | author-link=Rob Pike | date=21 Feb 1989 | title=Notes on programming in C | publisher=Cat-v document archive | url=http://doc.cat-v.org/bell_labs/pikestyle | access-date=9 Dec 2011 | | last=Pike | first=Rob | author-link=Rob Pike | date=21 Feb 1989 | title=Notes on programming in C | publisher=Cat-v document archive | url=http://doc.cat-v.org/bell_labs/pikestyle | access-date=9 Dec 2011 | ||
}}</ref> | }}</ref> | ||
Line 71: | Line 74: | ||
=== [[कोबोल]] === | === [[कोबोल]] === | ||
[[कोबोल]] (और [[आरपीजी चतुर्थ]] भी) प्रोग्रामर्स को कॉपीबुक्स को प्रोग्राम के स्रोत में हेडर फाइलों के समान तरीके से कॉपी करने की अनुमति देता है, लेकिन यह अन्य टेक्स्ट के साथ उनमें कुछ टेक्स्ट के प्रतिस्थापन की भी अनुमति देता है। कोबोल का मतलब कॉमन बिजनेस ओरिएंटेड भाषा है। अमेरिकी रक्षा विभाग ने एक सम्मेलन में, व्यापार डेटा प्रोसेसिंग जरूरतों के लिए एक भाषा विकसित करने के लिए कोडासिल (डेटा सिस्टम्स भाषा पर सम्मेलन) का गठन किया, जिसे अबकोबोल के रूप में जाना जाता है। | |||
कोबोल का उपयोग एप्लिकेशन प्रोग्राम लिखने के लिए किया जाता है और हम इसका उपयोग सिस्टम सॉफ्टवेयर लिखने के लिए नहीं कर सकते हैं। रक्षा डोमेन, बीमा डोमेन आदि जैसे अनुप्रयोग जिनके लिए विशाल डेटा प्रोसेसिंग की आवश्यकता होती है,कोबोल का व्यापक उपयोग करते हैं।समावेशन के लिए कोबोल कीवर्ड है <code>COPY</code>, और प्रतिस्थापन<code>REPLACING ... BY ...</code> खंड का उपयोग करके किया जाता है। कोबोल 60 के बाद से कोबोल में एक सम्मिलित निर्देश उपस्थित है, लेकिन 1968 तक मूल INCLUDE[6] से COPY में बदल गया। <ref>{{cite book | url=https://archive.org/details/codasylcoboljour00conf | title=CODASYL COBOL Journal of Development 1968 |date=July 1969 | section=The COPY Statement | lccn=73601243 }}</ref> | |||
=== [[फोरट्रान]] === | === [[फोरट्रान]] === | ||
फोरट्रान को प्रति हेडर फाइलों की आवश्यकता नहीं है। हालाँकि, फोरट्रान 90 और बाद में दो संबंधित विशेषताएं हैं: | फोरट्रान को प्रति हेडर फाइलों की आवश्यकता नहीं है। हालाँकि, [[फोरट्रान 90]] और बाद में दो संबंधित विशेषताएं हैं: बयान और मॉड्यूल सम्मिलित हैं। पूर्व का उपयोग सी हेडर की तरह प्रक्रिया इंटरफेस वाली एक सामान्य फ़ाइल को साझा करने के लिए किया जा सकता है, हालांकि [[फोरट्रान]] प्रक्रियाओं की सभी किस्मों के लिए इंटरफ़ेस के विनिर्देश की आवश्यकता नहीं है। इस दृष्टिकोण का सामान्यतः उपयोग नहीं किया जाता है; इसके अतिरिक्त , प्रक्रियाओं को सामान्यतः पर मॉड्यूल में समूहीकृत किया जाता है जिसे कोड के अन्य क्षेत्रों के भीतर उपयोग कथन के साथ संदर्भित किया जा सकता है। मॉड्यूल के लिए, हेडर-प्रकार की इंटरफ़ेस जानकारी स्वचालित रूप से संकलक द्वारा उत्पन्न होती है और सामान्यतः अलग-अलग मॉड्यूल फ़ाइलों में डाल दी जाती है, हालांकि कुछ कंपाइलरों ने इस जानकारी को सीधे ऑब्जेक्ट फ़ाइलों में रखा है। फोरट्रान परिपक्व है और सक्रिय विकास के अधीन है। भाषा का नवीनतम संशोधन फोरट्रान 2018 है। अगला संशोधन, फोरट्रान 2023, 2023 में जारी करने की योजना है। एक दर्जन से अधिक ओपन सोर्स और मालिकाना फोरट्रान कंपाइलर हैं। इसके अलावा, स्टैंडर्ड लाइब्रेरी और फोरट्रान पैकेज मैनेजर जैसे ओपन सोर्स प्रोजेक्ट सक्रिय विकास के अधीन हैं। भाषा विनिर्देश स्वयं किसी भी अतिरिक्त फाइल के निर्माण को अनिवार्य नहीं करता है, भले ही मॉड्यूल प्रक्रिया इंटरफेस इस तरह से लगभग सार्वभौमिक रूप से प्रचारित हो। | ||
=== पास्कल === | === पास्कल === | ||
Line 84: | Line 89: | ||
* <code>{$include ''filename.inc''}</code> | * <code>{$include ''filename.inc''}</code> | ||
* <code>(*INCLUDE ''filename.pas''*)</code> | * <code>(*INCLUDE ''filename.pas''*)</code> | ||
जहां <code>$i</code> या <code>$include</code> निर्देश [[मामले की संवेदनशीलता]] नहीं है, और filename.pas या filename.inc | जहां <code>$i</code> या <code>$include</code> निर्देश [[मामले की संवेदनशीलता]] नहीं है, और filename.pas या filename.inc समावेशित की जाने वाली फ़ाइल का नाम है। (पास्कल की सम्मिलित फ़ाइलों को [[फ़ाइल नाम एक्सटेंशन|फ़ाइल नाम]] विस्तारण '.inc' के साथ नाम देना सामान्य बात रही है, लेकिन इसकी आवश्यकता नहीं है।) कुछ संकलक, wikt:crock पुनरावर्तन को रोकने के लिए, एक निश्चित संख्या में फ़ाइल को सम्मिलित करने को सीमित करते हैं, स्वयं को लागू करने पर रोक लगाते हैं। या कोई भी वर्तमान में खुली फ़ाइल, या एक समय में अधिकतम एक फ़ाइल सम्मिलित करने तक सीमित है, उदा। एक सम्मिलित फ़ाइल में खुद को या किसी अन्य फ़ाइल को सम्मिलित नहीं किया जा सकता है। हालाँकि, प्रोग्राम जिसमें अन्य फ़ाइलें सम्मिलित हैं, उनमें एक समय में केवल एक, कई सम्मिलित हो सकते हैं। | ||
=== [[पीएचपी]] === | === [[पीएचपी]] === | ||
PHP में, <code>include</code> निर्देश एक और PHP फ़ाइल को | PHP में, <code>include</code> निर्देश एक और PHP फ़ाइल को सम्मिलित करने और [[मूल्यांकन (तर्क)|मूल्यांकन]] करने का कारण बनता है।<ref>{{cite web | url=http://www.php.net/manual/en/function.include.php | title=include | publisher=The PHP Group | website=php.net | access-date=20 February 2014}}</ref> इसी तरह के आदेशों की आवश्यकता होती है, जो सम्मिलित करने में विफल होने पर एक घातक अपवाद उत्पन्न करेगा और स्क्रिप्ट को रोक देगा, [9] और include_once और requ_once, जो फ़ाइल को सम्मिलित होने या फिर से आवश्यक होने से रोकता है, यदि इसे पहले से ही सम्मिलित किया गया है या आवश्यक है, C से परहेज दोहरे समावेशन की समस्या। | ||
=== अन्य भाषाएँ === | === अन्य भाषाएँ === | ||
समावेशित निर्देश के कई रूप हैं, जैसे: | |||
* <code>include ...</code> (फोरट्रान, [[माइक्रोसॉफ्ट मैक्रो असेंबलर]]) | * <code>include ...</code> (फोरट्रान, [[माइक्रोसॉफ्ट मैक्रो असेंबलर]]) | ||
* <code><!--#include ... --></code> (HTML [[सर्वर साइड शामिल है]]) | * <code><!--#include ... --></code> (HTML [[सर्वर साइड शामिल है|सर्वर साइड सम्मिलित है]]) | ||
* <code>import ...;</code> (जावा (प्रोग्रामिंग भाषा)) | * <code>import ...;</code> (जावा (प्रोग्रामिंग भाषा)) | ||
* <code>import ... from ...</code> (ईसीएमएस्क्रिप्ट के रूप में [[एकमा स्क्रिप्ट]]) | * <code>import ... from ...</code> (ईसीएमएस्क्रिप्ट के रूप में [[एकमा स्क्रिप्ट]]) | ||
Line 109: | Line 114: | ||
*<code>import ...;</code> ([[डी (प्रोग्रामिंग भाषा)]]) | *<code>import ...;</code> ([[डी (प्रोग्रामिंग भाषा)]]) | ||
आधुनिक भाषाएं (जैसे [[हास्केल (प्रोग्रामिंग भाषा)]] और जावा (प्रोग्रामिंग लैंग्वेज)) कॉपीबुक्स से बचती हैं या इसमें | आधुनिक भाषाएं (जैसे [[हास्केल (प्रोग्रामिंग भाषा)]] और जावा (प्रोग्रामिंग लैंग्वेज)) कॉपीबुक्स से बचती हैं या इसमें सम्मिलित हैं, [[नाम स्थान]] नियंत्रण के लिए [[मॉड्यूलर प्रोग्रामिंग]] और [[आयात/निर्यात सिस्टम]] को प्राथमिकता देना। इनमें से कुछ भाषाएं (जैसे कि जावा और C शार्प (प्रोग्रामिंग भाषा) C #) आगे की घोषणाओं का उपयोग नहीं करती हैं और इसके अतिरिक्त , पहचानकर्ताओं को स्रोत फ़ाइलों से स्वचालित रूप से पहचाना जाता है और गतिशील पुस्तकालय प्रतीकों से सीधे पढ़ा जाता है (सामान्यतः संदर्भित) आयात या निर्देश), जिसका अर्थ है हेडर फ़ाइलों की आवश्यकता नहीं है। | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 123: | Line 128: | ||
* [[फ़ाइल समावेशन भेद्यता]] | * [[फ़ाइल समावेशन भेद्यता]] | ||
* [[एक परिभाषा नियम]] (ओडीआर) | * [[एक परिभाषा नियम]] (ओडीआर) | ||
* [[इंटरफ़ेस परिभाषा भाषा]] (आईडीएल) | * [[इंटरफ़ेस परिभाषा भाषा|अंतराफलक परिभाषा भाषा]] (आईडीएल) | ||
* कक्षा कार्यान्वयन फ़ाइल | * कक्षा कार्यान्वयन फ़ाइल | ||
Revision as of 10:55, 28 February 2023
कई प्रोग्रामिंग भाषाओं और अन्य कंप्यूटर फ़ाइलों में एक निर्देश होता है, जिसे प्रायः समावेशन (कभी-कभी प्रतिलिपि या आयात) कहा जाता है, जो निर्दिष्ट फ़ाइल की सामग्री को मूल फ़ाइल में डालने का कारण बनता है। इन समावेशित फाइलों को कॉपीबुक या हेडर फाइल कहा जाता है। वे प्रायः प्रोग्राम डेटा के भौतिक लेआउट, प्रक्रियात्मक कोड के टुकड़े, और / या आगे की घोषणाओं को संपुटीकरण को बढ़ावा देने और कोड या डेटा के पुन: उपयोग को परिभाषित करने के लिए उपयोग किए जाते हैं।
हैडर फ़ाइलें
कंप्यूटर प्रोग्रामिंग में, एक हेडर फाइल एक फाइल है जो प्रोग्रामर को प्रोग्राम के स्रोत कोड के कुछ तत्वों को पुन: प्रयोज्य फाइलों में अलग करने की अनुमति देती है। शीर्षलेख फ़ाइलों में सामान्यतः कक्षाओं(कंप्यूटर विज्ञान) ईएस, उपनेमिका, चर (कंप्यूटर विज्ञान) और अन्य पहचानकर्ताओं की आगे की घोषणाएं होती हैं। प्रोग्रामर जो एक से अधिक स्रोत फ़ाइल में मानकीकृत पहचानकर्ताओं की घोषणा करना चाहते हैं, वे ऐसे पहचानकर्ताओं को एक ही हेडर फ़ाइल में रख सकते हैं, जो हेडर सामग्री की आवश्यकता होने पर अन्य कोड सम्मिलित कर सकते हैं। यह हेडर में अंतराफलक को कार्यान्वयन से अलग रखने के लिए है। [1]
C मानक पुस्तकालय और C ++ मानक पुस्तकालय पारंपरिक रूप से हेडर फाइलों में अपने मानक कार्यों की घोषणा करते हैं।
कुछ हाल ही में बनाई गई संकलित भाषाएँ (जैसे जावा, C #) आगे की घोषणाओं का उपयोग नहीं करती हैं; पहचानकर्ताओं को स्वचालित रूप से स्रोत फ़ाइलों से पहचाना जाता है और गतिशील पुस्तकालय प्रतीकों से सीधे पढ़ा जाता है। इसका मतलब है कि हेडर फाइलों की जरूरत नहीं है।
उद्देश्य
समावेशन
निर्देश कोड के पुस्तकालय (कंप्यूटिंग) को विकसित करने की अनुमति देता है जो मदद करता है:
- सुनिश्चित करें कि हर कोई एक कार्यक्रम के दौरान डेटा लेआउट परिभाषा या प्रक्रियात्मक कोड के समान संस्करण का उपयोग करता है,
- आसानी से प्रति निर्देश देना जहां सिस्टम में घटकों का उपयोग किया जाता है,
- जरूरत पड़ने पर आसानी से प्रोग्राम बदलें (केवल एक फाइल को संपादित किया जाना चाहिए), और
- डेटा लेआउट का पुन: उपयोग करके समय बचाएं।
उदाहरण
एक उदाहरण स्थिति जो एक समावेशित निर्देश के उपयोग से लाभान्वित होती है, जब किसी भिन्न फ़ाइल में फ़ंक्शंस का संदर्भ दिया जाता है। मान लीजिए कि कुछ C(प्रोग्रामिंग भाषा) स्रोत फ़ाइल है जिसमें फलन ऐड है, जिसे पहली बार इसके बाहरी अस्तित्व और प्रकार (एक फलन प्रतिमान के साथ) की घोषणा करके दूसरी फ़ाइल में संदर्भित किया जाता है:
<वाक्यविन्यास लैंग = सी> इंट ऐड (इंट, इंट);
इंट ट्रिपल (इंट एक्स) {
रिटर्न ऐड (एक्स, ऐड (एक्स, एक्स));
} </वाक्यविन्यास हाइलाइट>
इस दृष्टिकोण का एक अवगुण यह है कि फलन प्रतिमान फलन का उपयोग करने वाली सभी फ़ाइलों में उपस्थित होना चाहिए। एक और अवगुण यह है कि यदि रिटर्न प्रकार या फलन के तर्क बदल दिए जाते हैं, तो इन सभी प्रोटोटाइपों को अद्यतन करने की आवश्यकता होगी। प्रतिमान को एक सिंगल, अलग फाइल में रखने से इन मुद्दों से बचा जा सकता है। प्रतिमान मानते हुए फ़ाइल add.h में ले जाया गया है, तब दूसरी स्रोत फ़ाइल बन सकती है: <वाक्यविन्यास लैंग = सी>
- सम्मिलित ऐड.एच
इंट ट्रिपल (इंट एक्स) {
रिटर्न ऐड (एक्स, ऐड (एक्स, एक्स));
} </वाक्यविन्यास हाइलाइट>
अब, हर बार जब कोड संकलित किया जाता है, नवीनतम फलन प्रतिमान में add.h
संभावित त्रुटियों से बचने के लिए उनका उपयोग करते हुए फाइलों में सम्मिलित किया जाएगा।
भाषा समर्थन
C/C++
C (प्रोग्रामिंग भाषा) और C++ प्रोग्रामिंग भाषाओं में, #include
निर्देश (प्रोग्रामिंग) संकलक को उस पंक्ति को नामित स्रोत फ़ाइल की सामग्री के पूरे पाठ्य भाग के साथ बदलने का कारण बनता है (यदि उद्धरण में सम्मिलित है:) या नामित हेडर (यदि कोण कोष्ठक में सम्मिलित है: <>);[2] ध्यान दें कि शीर्षलेख को स्रोत फ़ाइल होने की आवश्यकता नहीं है।[3] कार्यान्वयन-परिभाषित नेस्टिंग सीमा तक, इन सम्मिलित सामग्रियों पर समावेशन पुनरावर्ती रूप से जारी रहता है। शीर्षलेखों के पास फ़ाइलों से संबंधित नामों की आवश्यकता नहीं है: C++ मानक शीर्षलेखों में सामान्यतः वेक्टर जैसे शब्दों के साथ पहचाने जाते हैं इसलिए#include <vector>
, जबकि C मानक हेडर में ".h" विस्तारण के साथ फ़ाइल नाम के रूप में पहचानकर्ता होते हैं, जैसे कि #include <stdio.h>
. एक स्रोत फ़ाइल कोई भी फ़ाइल हो सकती है, किसी भी रूप के नाम के साथ, लेकिन सामान्यतः इसे .h विस्तारण के साथ नामित किया जाता है और इसे हेडर फ़ाइल (कभी-कभी .hpp या .hh C++ हेडर को अलग करने के लिए) कहा जाता है, हालाँकि .c, . cc, और .cpp विस्तारण भी सम्मिलित हो सकते हैं (विशेष रूप से एकल संकलन इकाई तकनीक में), और कभी-कभी अन्य विस्तारण का उपयोग किया जाता है।
समावेशित निर्देश के ये दो रूप यह निर्धारित कर सकते हैं कि कार्यान्वयन-परिभाषित तरीके से किस हेडर या स्रोत फ़ाइल को सम्मिलित किया जाए। C++ एक सामान्य उद्देश्य, केस-संवेदी, फ्री-फ़ॉर्म प्रोग्रामिंग भाषा है जो ऑब्जेक्ट-ओरिएंटेड, प्रक्रियात्मक और सामान्य प्रोग्रामिंग का समर्थन करती है। व्यवहार में, सामान्यतः यह किया जाता है कि कोण-कोष्ठक एक मानक सिस्टम निर्देशिका (या निर्देशिकाओं के सेट) में स्रोत फ़ाइलों की खोज करता है, और फिर स्थानीय या प्रोजेक्ट-विशिष्ट पथों में स्रोत फ़ाइलों की खोज करता है (कमांड लाइन पर निर्दिष्ट, एक पर्यावरण चर में, या मेकफाइल या अन्य बिल्ड फ़ाइल में), जबकि उद्धरण के साथ फॉर्म मानक सिस्टम निर्देशिका में नहीं खोजता है, केवल स्थानीय या प्रोजेक्ट-विशिष्ट पथों में खोज करता है।[4] यदि कोई टकराव नहीं होता है, तो कोण-कोष्ठक प्रपत्र का उपयोग परियोजना-विशिष्ट सम्मिलित निर्दिष्ट करने के लिए भी किया जा सकता है, लेकिन इसे खराब रूप माना जाता है। तथ्य यह है कि शीर्षलेखों को फाइलों से मेल खाने की आवश्यकता नहीं है, मुख्य रूप से एक कार्यान्वयन तकनीकीता है, और इसका उपयोग C++ मानक शीर्षलेखों सहित .h विस्तारण को छोड़ने के लिए किया जाता है; सामान्य उपयोग में, हेडर का अर्थ है हेडर फ़ाइल।
उदाहरण के लिए:
<वाक्यविन्यास लैंग = सीपीपी>
- सम्मिलित <stdio.h> // मानक हेडर 'stdio.h' (शायद एक फ़ाइल 'stdio.h') की सामग्री सम्मिलित करें।
- सम्मिलित <वेक्टर> // मानक हेडर 'वेक्टर' की सामग्री सम्मिलित करें (शायद एक फ़ाइल 'वेक्टर.एच')।
- include user_defined.h // फ़ाइल 'user_defined.h' की सामग्री सम्मिलित करें।
</वाक्यविन्यास हाइलाइट>
Cऔर C++ में, दो (या अधिक) फ़ाइलों में एक ही तीसरी फ़ाइल सम्मिलित होने पर समस्याओं का सामना करना पड़ सकता है। एक समाधान यह है कि किसी भी अन्य फ़ाइलों को सम्मिलित करने से फ़ाइलों को सम्मिलित करने से बचें, संभवतः प्रोग्रामर को मैन्युअल रूप से अतिरिक्त जोड़ने के लिए मूल फ़ाइल में निर्देश सम्मिलित करने की आवश्यकता होती है। एक अन्य समाधान का उपयोग गार्ड सम्मिलित करना है।[5]
कोबोल
कोबोल (और आरपीजी चतुर्थ भी) प्रोग्रामर्स को कॉपीबुक्स को प्रोग्राम के स्रोत में हेडर फाइलों के समान तरीके से कॉपी करने की अनुमति देता है, लेकिन यह अन्य टेक्स्ट के साथ उनमें कुछ टेक्स्ट के प्रतिस्थापन की भी अनुमति देता है। कोबोल का मतलब कॉमन बिजनेस ओरिएंटेड भाषा है। अमेरिकी रक्षा विभाग ने एक सम्मेलन में, व्यापार डेटा प्रोसेसिंग जरूरतों के लिए एक भाषा विकसित करने के लिए कोडासिल (डेटा सिस्टम्स भाषा पर सम्मेलन) का गठन किया, जिसे अबकोबोल के रूप में जाना जाता है।
कोबोल का उपयोग एप्लिकेशन प्रोग्राम लिखने के लिए किया जाता है और हम इसका उपयोग सिस्टम सॉफ्टवेयर लिखने के लिए नहीं कर सकते हैं। रक्षा डोमेन, बीमा डोमेन आदि जैसे अनुप्रयोग जिनके लिए विशाल डेटा प्रोसेसिंग की आवश्यकता होती है,कोबोल का व्यापक उपयोग करते हैं।समावेशन के लिए कोबोल कीवर्ड है COPY
, और प्रतिस्थापनREPLACING ... BY ...
खंड का उपयोग करके किया जाता है। कोबोल 60 के बाद से कोबोल में एक सम्मिलित निर्देश उपस्थित है, लेकिन 1968 तक मूल INCLUDE[6] से COPY में बदल गया। [6]
फोरट्रान
फोरट्रान को प्रति हेडर फाइलों की आवश्यकता नहीं है। हालाँकि, फोरट्रान 90 और बाद में दो संबंधित विशेषताएं हैं: बयान और मॉड्यूल सम्मिलित हैं। पूर्व का उपयोग सी हेडर की तरह प्रक्रिया इंटरफेस वाली एक सामान्य फ़ाइल को साझा करने के लिए किया जा सकता है, हालांकि फोरट्रान प्रक्रियाओं की सभी किस्मों के लिए इंटरफ़ेस के विनिर्देश की आवश्यकता नहीं है। इस दृष्टिकोण का सामान्यतः उपयोग नहीं किया जाता है; इसके अतिरिक्त , प्रक्रियाओं को सामान्यतः पर मॉड्यूल में समूहीकृत किया जाता है जिसे कोड के अन्य क्षेत्रों के भीतर उपयोग कथन के साथ संदर्भित किया जा सकता है। मॉड्यूल के लिए, हेडर-प्रकार की इंटरफ़ेस जानकारी स्वचालित रूप से संकलक द्वारा उत्पन्न होती है और सामान्यतः अलग-अलग मॉड्यूल फ़ाइलों में डाल दी जाती है, हालांकि कुछ कंपाइलरों ने इस जानकारी को सीधे ऑब्जेक्ट फ़ाइलों में रखा है। फोरट्रान परिपक्व है और सक्रिय विकास के अधीन है। भाषा का नवीनतम संशोधन फोरट्रान 2018 है। अगला संशोधन, फोरट्रान 2023, 2023 में जारी करने की योजना है। एक दर्जन से अधिक ओपन सोर्स और मालिकाना फोरट्रान कंपाइलर हैं। इसके अलावा, स्टैंडर्ड लाइब्रेरी और फोरट्रान पैकेज मैनेजर जैसे ओपन सोर्स प्रोजेक्ट सक्रिय विकास के अधीन हैं। भाषा विनिर्देश स्वयं किसी भी अतिरिक्त फाइल के निर्माण को अनिवार्य नहीं करता है, भले ही मॉड्यूल प्रक्रिया इंटरफेस इस तरह से लगभग सार्वभौमिक रूप से प्रचारित हो।
पास्कल
अधिकांश पास्कल (प्रोग्रामिंग भाषा) संकलक समर्थन करते हैं $i
या $include
संकलक निर्देश, जिसमें $i
या $include
निर्देश तुरंत एक टिप्पणी ब्लॉक के रूप में शुरू होता है
{$i filename.pas}
(*$I filename.inc*)
{$include filename.inc}
(*INCLUDE filename.pas*)
जहां $i
या $include
निर्देश मामले की संवेदनशीलता नहीं है, और filename.pas या filename.inc समावेशित की जाने वाली फ़ाइल का नाम है। (पास्कल की सम्मिलित फ़ाइलों को फ़ाइल नाम विस्तारण '.inc' के साथ नाम देना सामान्य बात रही है, लेकिन इसकी आवश्यकता नहीं है।) कुछ संकलक, wikt:crock पुनरावर्तन को रोकने के लिए, एक निश्चित संख्या में फ़ाइल को सम्मिलित करने को सीमित करते हैं, स्वयं को लागू करने पर रोक लगाते हैं। या कोई भी वर्तमान में खुली फ़ाइल, या एक समय में अधिकतम एक फ़ाइल सम्मिलित करने तक सीमित है, उदा। एक सम्मिलित फ़ाइल में खुद को या किसी अन्य फ़ाइल को सम्मिलित नहीं किया जा सकता है। हालाँकि, प्रोग्राम जिसमें अन्य फ़ाइलें सम्मिलित हैं, उनमें एक समय में केवल एक, कई सम्मिलित हो सकते हैं।
पीएचपी
PHP में, include
निर्देश एक और PHP फ़ाइल को सम्मिलित करने और मूल्यांकन करने का कारण बनता है।[7] इसी तरह के आदेशों की आवश्यकता होती है, जो सम्मिलित करने में विफल होने पर एक घातक अपवाद उत्पन्न करेगा और स्क्रिप्ट को रोक देगा, [9] और include_once और requ_once, जो फ़ाइल को सम्मिलित होने या फिर से आवश्यक होने से रोकता है, यदि इसे पहले से ही सम्मिलित किया गया है या आवश्यक है, C से परहेज दोहरे समावेशन की समस्या।
अन्य भाषाएँ
समावेशित निर्देश के कई रूप हैं, जैसे:
include ...
(फोरट्रान, माइक्रोसॉफ्ट मैक्रो असेंबलर)<!--#include ... -->
(HTML सर्वर साइड सम्मिलित है)import ...;
(जावा (प्रोग्रामिंग भाषा))import ... from ...
(ईसीएमएस्क्रिप्ट के रूप में एकमा स्क्रिप्ट)var ... = require("...")
(कॉमनजेएस के साथ जावास्क्रिप्ट)<%@ include ... %>
(जावा सर्वर पेज){$I ...}
(यूसीएसडी पास्कल, टर्बो पास्कल)%include ...
(पीएल/आई)import ...
(पायथन_ (प्रोग्रामिंग_भाषा))/COPY QCPYLESRC,QBC
(RPG IV - पहला तर्क फ़ाइल का नाम है, दूसरा तर्क कॉपीबुक है)use ...;
(जंग_(प्रोग्रामिंग_भाषा))using ...;
(सी_शार्प_(प्रोग्रामिंग_भाषा)|सी#)local ... = require("...")
(लुआ (प्रोग्रामिंग भाषा))import ...;
(डी (प्रोग्रामिंग भाषा))
आधुनिक भाषाएं (जैसे हास्केल (प्रोग्रामिंग भाषा) और जावा (प्रोग्रामिंग लैंग्वेज)) कॉपीबुक्स से बचती हैं या इसमें सम्मिलित हैं, नाम स्थान नियंत्रण के लिए मॉड्यूलर प्रोग्रामिंग और आयात/निर्यात सिस्टम को प्राथमिकता देना। इनमें से कुछ भाषाएं (जैसे कि जावा और C शार्प (प्रोग्रामिंग भाषा) C #) आगे की घोषणाओं का उपयोग नहीं करती हैं और इसके अतिरिक्त , पहचानकर्ताओं को स्रोत फ़ाइलों से स्वचालित रूप से पहचाना जाता है और गतिशील पुस्तकालय प्रतीकों से सीधे पढ़ा जाता है (सामान्यतः संदर्भित) आयात या निर्देश), जिसका अर्थ है हेडर फ़ाइलों की आवश्यकता नहीं है।
यह भी देखें
- एपीआई (एपीआई)
- पूर्वसंकलित हेडर
- सबरूटीन
- मॉड्यूलर प्रोग्रामिंग
- प्रागमा वंस|#प्रगमा वंस
- केवल शीर्ष लेख
- एकता निर्माण
- अंतरण
- फ़ाइल समावेशन भेद्यता
- एक परिभाषा नियम (ओडीआर)
- अंतराफलक परिभाषा भाषा (आईडीएल)
- कक्षा कार्यान्वयन फ़ाइल
संदर्भ
- ↑ Alan Griffiths (2005). "Separating Interface and Implementation in C++". ACCU. Retrieved 2013-05-07.
- ↑ C11 standard, 6.10.2 Source file inclusion, pp. 164–165
- ↑ C11 standard, 7.1.2 Standard headers, p. 181, footnote 182: "A header is not necessarily a source file, nor are the
<
and>
delimited sequences in header names necessarily valid source file names. - ↑ Stallman, Richard M. (July 1992). "The C Preprocessor" (PDF). Archived from the original (PDF) on 4 September 2012. Retrieved 19 February 2014.
- ↑ Pike, Rob (21 Feb 1989), Notes on programming in C, Cat-v document archive, retrieved 9 Dec 2011
- ↑ "The COPY Statement". CODASYL COBOL Journal of Development 1968. July 1969. LCCN 73601243.
- ↑ "include". php.net. The PHP Group. Retrieved 20 February 2014.