निर्देश शामिल करें
कई प्रोग्रामिंग भाषा और अन्य कंप्यूटर फाइलों में एक निर्देश (प्रोग्रामिंग) होता है, जिसे अक्सर कहा जाता हैinclude
(कभी-कभीcopy
याimport
), जो निर्दिष्ट फ़ाइल की सामग्री को मूल फ़ाइल में डालने का कारण बनता है। इन शामिल फ़ाइलों को कॉपीबुक या कहा जाता हैheader fileएस। एक हजार से अधिक सी लाइब्रेरी फाइलें हैं और इन्हें अक्सर एनकैप्सुलेशन (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) और कोड या डेटा के पुन: उपयोग को बढ़ावा देने के दौरान प्रोग्राम डेटा के भौतिक लेआउट, प्रक्रियात्मक कोड के टुकड़े, और/या आगे की घोषणाओं को परिभाषित करने के लिए उपयोग किया जाता है।
हैडर फ़ाइलें
कंप्यूटर प्रोग्रामिंग में, एक हेडर फाइल एक फाइल है जो प्रोग्रामर को प्रोग्राम के स्रोत कोड के कुछ तत्वों को पुन: प्रयोज्य फाइलों में अलग करने की अनुमति देती है। शीर्षलेख फ़ाइलों में आमतौर पर कक्षा (कंप्यूटर विज्ञान) ईएस, सबरूटीन्स, चर (कंप्यूटर विज्ञान) और अन्य पहचानकर्ताओं की आगे की घोषणाएं होती हैं। प्रोग्रामर जो एक से अधिक स्रोत फ़ाइल में मानकीकृत पहचानकर्ताओं की घोषणा करना चाहते हैं, वे ऐसे पहचानकर्ताओं को एक ही हेडर फ़ाइल में रख सकते हैं, जो हेडर सामग्री की आवश्यकता होने पर अन्य कोड शामिल कर सकते हैं। यह इंटरफ़ेस को हेडर में क्लास कार्यान्वयन फ़ाइल से अलग रखना है। [1] सी मानक पुस्तकालय और सी ++ मानक पुस्तकालय पारंपरिक रूप से हेडर फाइलों में अपने मानक कार्यों की घोषणा करते हैं।
कुछ हाल ही में संकलित भाषाएँ (जैसे जावा (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग भाषा) | सी #) आगे की घोषणाओं का उपयोग नहीं करती हैं; पहचानकर्ताओं को स्वचालित रूप से स्रोत फ़ाइलों से पहचाना जाता है और गतिशील पुस्तकालय प्रतीकों से सीधे पढ़ा जाता है। इसका मतलब है कि हेडर फाइलों की जरूरत नहीं है।
उद्देश्य
include
निर्देश कोड के पुस्तकालय (कंप्यूटिंग) को विकसित करने की अनुमति देता है जो मदद करता है:
- सुनिश्चित करें कि हर कोई एक कार्यक्रम के दौरान डेटा लेआउट परिभाषा या प्रक्रियात्मक कोड के समान संस्करण का उपयोग करता है,
- आसानी से क्रॉस-रेफरेंस जहां सिस्टम में घटकों का उपयोग किया जाता है,
- जरूरत पड़ने पर आसानी से प्रोग्राम बदलें (केवल एक फाइल को संपादित किया जाना चाहिए), और
- डेटा लेआउट का पुन: उपयोग करके समय बचाएं।
उदाहरण
एक उदाहरण स्थिति जो एक शामिल निर्देश के उपयोग से लाभान्वित होती है, जब किसी भिन्न फ़ाइल में फ़ंक्शंस का संदर्भ दिया जाता है। मान लीजिए कि कुछ सी (प्रोग्रामिंग भाषा) स्रोत फ़ाइल है जिसमें फ़ंक्शन है add
, जिसे पहली बार इसके बाहरी अस्तित्व और प्रकार (एक फ़ंक्शन प्रोटोटाइप के साथ) की घोषणा करके दूसरी फ़ाइल में संदर्भित किया जाता है:
<वाक्यविन्यास लैंग = सी>
इंट ऐड (इंट, इंट);
इंट ट्रिपल (इंट एक्स) {
रिटर्न ऐड (एक्स, ऐड (एक्स, एक्स));
} </वाक्यविन्यास हाइलाइट>
इस दृष्टिकोण का एक दोष यह है कि फ़ंक्शन प्रोटोटाइप फ़ंक्शन का उपयोग करने वाली सभी फ़ाइलों में मौजूद होना चाहिए। एक और दोष यह है कि यदि रिटर्न प्रकार या फ़ंक्शन के तर्क बदल दिए जाते हैं, तो इन सभी प्रोटोटाइपों को अद्यतन करने की आवश्यकता होगी। प्रोटोटाइप को एक सिंगल, अलग फाइल में रखने से इन मुद्दों से बचा जा सकता है। प्रोटोटाइप मानते हुए फ़ाइल में ले जाया गया है add.h
, दूसरी स्रोत फ़ाइल तब बन सकती है:
<वाक्यविन्यास लैंग = सी>
- शामिल ऐड.एच
इंट ट्रिपल (इंट एक्स) {
रिटर्न ऐड (एक्स, ऐड (एक्स, एक्स));
} </वाक्यविन्यास हाइलाइट>
अब, हर बार कोड संकलित किया जाता है, नवीनतम फ़ंक्शन प्रोटोटाइप में add.h
संभावित त्रुटियों से बचने के लिए उनका उपयोग करते हुए फाइलों में शामिल किया जाएगा।
भाषा समर्थन
सी/सी ++
C (प्रोग्रामिंग भाषा) और C++ प्रोग्रामिंग भाषाओं में, #include
निर्देश (प्रोग्रामिंग) संकलक को उस पंक्ति को नामित स्रोत फ़ाइल की सामग्री के पूरे पाठ के साथ बदलने का कारण बनता है (यदि उद्धरण में शामिल है:) या नामित हेडर (यदि कोण कोष्ठक में शामिल है: <>);[2] ध्यान दें कि शीर्षलेख को स्रोत फ़ाइल होने की आवश्यकता नहीं है।[3] कार्यान्वयन-परिभाषित नेस्टिंग सीमा तक, इन सम्मिलित सामग्रियों पर समावेशन पुनरावर्ती रूप से जारी रहता है। शीर्षलेखों के पास फ़ाइलों से संबंधित नामों की आवश्यकता नहीं है: सी ++ मानक शीर्षलेखों में आमतौर पर वेक्टर जैसे शब्दों के साथ पहचाने जाते हैं #include <vector>
, जबकि C मानक हेडर में .h एक्सटेंशन के साथ फ़ाइल नाम के रूप में पहचानकर्ता होते हैं, जैसे कि #include <stdio.h>
. एक स्रोत फ़ाइल कोई भी फ़ाइल हो सकती है, किसी भी रूप के नाम के साथ, लेकिन आमतौर पर इसे .h एक्सटेंशन के साथ नामित किया जाता है और इसे हेडर फ़ाइल (कभी-कभी .hpp या .hh C++ हेडर को अलग करने के लिए) कहा जाता है, हालाँकि .c, . cc, और .cpp एक्सटेंशन भी शामिल हो सकते हैं (विशेष रूप से एकल संकलन इकाई तकनीक में), और कभी-कभी अन्य एक्सटेंशन का उपयोग किया जाता है।
इन दो रूपों #include
निर्देश यह निर्धारित कर सकता है कि कार्यान्वयन-परिभाषित तरीके से कौन सी शीर्षलेख या स्रोत फ़ाइल शामिल की जाए। व्यवहार में, आमतौर पर यह किया जाता है कि कोण-कोष्ठक एक मानक सिस्टम निर्देशिका (या निर्देशिकाओं के सेट) में स्रोत फ़ाइलों की खोज करता है, और फिर स्थानीय या प्रोजेक्ट-विशिष्ट पथों में स्रोत फ़ाइलों की खोज करता है (कमांड लाइन पर निर्दिष्ट, एक पर्यावरण चर में, या मेकफाइल या अन्य बिल्ड फ़ाइल में), जबकि उद्धरण के साथ फॉर्म मानक सिस्टम निर्देशिका में नहीं खोजता है, केवल स्थानीय या प्रोजेक्ट-विशिष्ट पथों में खोज करता है।[4] यदि कोई टकराव नहीं होता है, तो कोण-कोष्ठक प्रपत्र का उपयोग परियोजना-विशिष्ट शामिल निर्दिष्ट करने के लिए भी किया जा सकता है, लेकिन इसे खराब रूप माना जाता है। तथ्य यह है कि शीर्षलेखों को फाइलों से मेल खाने की आवश्यकता नहीं है, मुख्य रूप से एक कार्यान्वयन तकनीकीता है, और इसका उपयोग सी ++ मानक शीर्षलेखों सहित .h एक्सटेंशन को छोड़ने के लिए किया जाता है; सामान्य उपयोग में, हेडर का अर्थ है हेडर फ़ाइल।
उदाहरण के लिए: <वाक्यविन्यास लैंग = सीपीपी>
- शामिल <stdio.h> // मानक हेडर 'stdio.h' (शायद एक फ़ाइल 'stdio.h') की सामग्री शामिल करें।
- शामिल <वेक्टर> // मानक हेडर 'वेक्टर' की सामग्री शामिल करें (शायद एक फ़ाइल 'वेक्टर.एच')।
- include user_defined.h // फ़ाइल 'user_defined.h' की सामग्री शामिल करें।
</वाक्यविन्यास हाइलाइट>
सी और सी ++ में, दो (या अधिक) फ़ाइलों में एक ही तीसरी फ़ाइल शामिल होने पर समस्याओं का सामना करना पड़ सकता है। एक समाधान यह है कि किसी भी अन्य फ़ाइलों को शामिल करने से फ़ाइलों को शामिल करने से बचें, संभवतः प्रोग्रामर को मैन्युअल रूप से अतिरिक्त जोड़ने के लिए मूल फ़ाइल में निर्देश शामिल करने की आवश्यकता होती है। एक अन्य समाधान का उपयोग गार्ड शामिल करना है।[5]
कोबोल
COBOL (और आरपीजी चतुर्थ भी) प्रोग्रामर्स को कॉपीबुक्स को प्रोग्राम के स्रोत में हेडर फाइलों के समान तरीके से कॉपी करने की अनुमति देता है, लेकिन यह अन्य टेक्स्ट के साथ उनमें कुछ टेक्स्ट के प्रतिस्थापन की भी अनुमति देता है। समावेशन के लिए COBOL कीवर्ड है COPY
, और प्रतिस्थापन का उपयोग करके किया जाता है REPLACING ... BY ...
खंड। COBOL 60 के बाद से COBOL में एक शामिल निर्देश मौजूद है, लेकिन मूल से बदल दिया गया है INCLUDE
[6] को COPY
1968 तक।[7]
फोरट्रान
फोरट्रान को प्रति हेडर फाइलों की आवश्यकता नहीं है। हालाँकि, फोरट्रान 90 और बाद में दो संबंधित विशेषताएं हैं: include
बयान और मॉड्यूल। पूर्व का उपयोग सी हेडर की तरह प्रक्रिया इंटरफेस वाली एक सामान्य फ़ाइल को साझा करने के लिए किया जा सकता है, हालांकि फोरट्रान प्रक्रियाओं की सभी किस्मों के लिए इंटरफ़ेस के विनिर्देश की आवश्यकता नहीं है। इस दृष्टिकोण का आमतौर पर उपयोग नहीं किया जाता है; इसके बजाय, प्रक्रियाओं को आम तौर पर मॉड्यूल में समूहीकृत किया जाता है जिसे बाद में संदर्भित किया जा सकता है use
कोड के अन्य क्षेत्रों के भीतर बयान। मॉड्यूल के लिए, हेडर-प्रकार की इंटरफ़ेस जानकारी स्वचालित रूप से संकलक द्वारा उत्पन्न होती है और आमतौर पर अलग-अलग मॉड्यूल फ़ाइलों में डाल दी जाती है, हालांकि कुछ कंपाइलरों ने इस जानकारी को सीधे ऑब्जेक्ट फ़ाइलों में रखा है। भाषा विनिर्देश स्वयं किसी भी अतिरिक्त फाइल के निर्माण को अनिवार्य नहीं करता है, भले ही मॉड्यूल प्रक्रिया इंटरफेस इस तरह से लगभग सार्वभौमिक रूप से प्रचारित हो।
पास्कल
अधिकांश पास्कल (प्रोग्रामिंग भाषा) संकलक समर्थन करते हैं $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 फ़ाइल को शामिल करने और मूल्यांकन करने का कारण बनता है।[8] इसी प्रकार के आदेश हैं require
, जो शामिल करने में विफल होने पर घातक अपवाद उत्पन्न करेगा और स्क्रिप्ट को रोक देगा,[9] और include_once
और require_once
, जो सी की दोहरी समावेशन समस्या से बचने के लिए फ़ाइल को शामिल होने या फिर से आवश्यक होने से रोकता है यदि इसे पहले ही शामिल किया गया है या आवश्यक है।
अन्य भाषाएँ
शामिल निर्देश के कई रूप हैं, जैसे:
include ...
(फोरट्रान, माइक्रोसॉफ्ट मैक्रो असेंबलर)<!--#include ... -->
(HTML सर्वर साइड शामिल है)import ...;
(जावा (प्रोग्रामिंग भाषा))import ... from ...
(ईसीएमएस्क्रिप्ट के रूप में एकमा स्क्रिप्ट)var ... = require("...")
(कॉमनजेएस के साथ जावास्क्रिप्ट)<%@ include ... %>
(जावा सर्वर पेज){$I ...}
(यूसीएसडी पास्कल, टर्बो पास्कल)%include ...
(पीएल/आई)import ...
(पायथन_ (प्रोग्रामिंग_भाषा))/COPY QCPYLESRC,QBC
(RPG IV - पहला तर्क फ़ाइल का नाम है, दूसरा तर्क कॉपीबुक है)use ...;
(जंग_(प्रोग्रामिंग_भाषा))using ...;
(सी_शार्प_(प्रोग्रामिंग_भाषा)|सी#)local ... = require("...")
(लुआ (प्रोग्रामिंग भाषा))import ...;
(डी (प्रोग्रामिंग भाषा))
आधुनिक भाषाएं (जैसे हास्केल (प्रोग्रामिंग भाषा) और जावा (प्रोग्रामिंग लैंग्वेज)) कॉपीबुक्स से बचती हैं या इसमें शामिल हैं, नाम स्थान नियंत्रण के लिए मॉड्यूलर प्रोग्रामिंग और आयात/निर्यात सिस्टम को प्राथमिकता देना। इनमें से कुछ भाषाएं (जैसे कि जावा और सी शार्प (प्रोग्रामिंग भाषा)|सी#) आगे की घोषणाओं का उपयोग नहीं करती हैं और इसके बजाय, पहचानकर्ताओं को स्रोत फ़ाइलों से स्वचालित रूप से पहचाना जाता है और गतिशील पुस्तकालय प्रतीकों से सीधे पढ़ा जाता है (आमतौर पर संदर्भित) import
या using
निर्देश), जिसका अर्थ है हेडर फ़ाइलों की आवश्यकता नहीं है।
यह भी देखें
- एपीआई (एपीआई)
- पूर्वसंकलित हेडर
- सबरूटीन
- मॉड्यूलर प्रोग्रामिंग
- प्रागमा वंस|#प्रगमा वंस
- केवल शीर्ष लेख
- एकता निर्माण
- अंतरण
- फ़ाइल समावेशन भेद्यता
- एक परिभाषा नियम (ओडीआर)
- इंटरफ़ेस परिभाषा भाषा (आईडीएल)
- कक्षा कार्यान्वयन फ़ाइल
संदर्भ
- ↑ 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
- ↑ "COBOL Initial Specifications for a COmmon Business Oriented Language" (PDF). Department of Defense. April 1960. p. IX-9. Archived from the original (PDF) on 12 February 2014. Retrieved 11 February 2014.
- ↑ "The COPY Statement". CODASYL COBOL Journal of Development 1968. July 1969. LCCN 73601243.
- ↑ "include". php.net. The PHP Group. Retrieved 20 February 2014.
- ↑ होना.php "ज़रूरत होना". php.net. The PHP Group. Retrieved 20 February 2014.
{{cite web}}
: Check|url=
value (help)