हैडर फ़ाइलें कुछ नहीं जादुई हैं, वे तो बस अपनी .cpp
फ़ाइल को सुनिश्चित करने के लिए एक सुविधाजनक तरीका हो इसकी सभी घोषणाओं और परिभाषाओं तक पहुंच है। इसलिए केवल उन सभी को शामिल करें जिन्हें आपको वास्तव में अपनी प्रत्येक फाइल (1) में आवश्यक है।
उपरोक्त संदर्भ में आपकी फ़ाइलों में #include
कथन डालने का संदर्भ है-केवल हेडर फ़ाइलों के लिए ऐसा करें जो आपको वास्तव में उपयोग करने की आवश्यकता है। बेशक, आपके द्वारा शामिल हेडर फाइलें #include
अन्य हेडर फाइलें स्वयं ही कर सकती हैं।
किसी भी अन्य अच्छी तरह से व्यवहार (यानी, वास्तव में उपयोग करने योग्य) डीएलएल की तरह, आपके डीएलएल को सार्वजनिक इंटरफ़ेस हेडर फ़ाइलों का एक सेट प्रदान करना होगा। सामान्य परिस्थितियों में, आपके पास उस DLL का उपयोग करके प्रोग्राम बनाने के लिए इन सभी सार्वजनिक इंटरफ़ेस शीर्षलेख फ़ाइलें उपलब्ध होनी चाहिए। इसका मतलब यह नहीं है कि आपको #include
उन सभी को चाहिए; इसके विपरीत, आपको नहीं करना चाहिए। कंपाइलर (प्रीप्रोसेसर, वास्तव में) #include
की आवश्यकता होगी।
ध्यान दें कि जब डीएलएल स्वयं बनाया गया था, तो शायद कई और शीर्षलेख फ़ाइलें शामिल थीं, लेकिन ये कार्यान्वयन के लिए निजी थीं और सार्वजनिक इंटरफ़ेस का हिस्सा नहीं थीं। आपको डीएलएल का उपयोग करके प्रोग्राम बनाने की आवश्यकता नहीं है, और सामान्य स्थिति में आपको उनके पास पहुंच भी नहीं है।
तो, जब आप अपने स्वयं के डीएलएल को डिजाइन करते हैं, तो आपको सार्वजनिक और आंतरिक शीर्षलेख फ़ाइलों के बीच कठोर रूप से अंतर करना होगा। सार्वजनिक हेडर फ़ाइलों को ग्राहकों के लिए उपलब्ध कराया जाना चाहिए, आंतरिक लोगों को इसकी आवश्यकता नहीं है (जब तक क्लाइंट को डीएलएल स्वयं बनाना नहीं है)। बेशक, इसका मतलब है कि एक सार्वजनिक हेडर फ़ाइल कभी भी #include
आंतरिक नहीं हो सकती है।
(1) ध्यान दें कि फ़ाइल शामिल किए जाने के शीर्षक के विशुद्ध रूप से शाब्दिक-जब अपने स्रोत फ़ाइल को पढ़ने है, पूर्वप्रक्रमक प्रभावी रूप से प्रतियां हेडर फाइल और #include
बयान के स्थान पर चिपकाता यह की सामग्री है, तो पर चला जाता है पार्स करने। आपने यह प्रतिलिपि बनाई है & इसके बजाय स्वयं पेस्ट करें, फ़ाइल भी निर्माण और चलाने के लिए ही होगी। बेशक, यह हेडर फ़ाइल में बाद में बदलाव नहीं उठाएगा, जो प्राथमिक कारण है कि शीर्षलेख फ़ाइलों का उपयोग पहली जगह क्यों किया जाता है।
लेकिन, कई शीर्षलेख उन कार्यों के शीर्षकों में शामिल किए गए हैं जिन्हें मैं कॉल करता हूं (और उनके संबंधित शीर्षलेख को शामिल करता हूं)। उनके बारे में कंपाइलर कैसे जानता है? – user215721
@ उपयोगकर्ता 215721 '# शामिल हैं' डीएलएल की शीर्षलेख फ़ाइलों में 'कथन' किसी अन्य '# शामिल' कथन की तरह हल किया जाएगा। मैं थोड़ा सा जवाब विस्तारित करूंगा, शायद हम "शामिल" शब्द के विभिन्न अर्थों का जिक्र कर रहे हैं। – Angew
बहुत बहुत धन्यवाद। आपकी आखिरी वाक्य ने वास्तव में मुझे जवाब दिया: * बेशक, इसका मतलब है कि एक सार्वजनिक हेडर फ़ाइल कभी भी एक आंतरिक शामिल नहीं हो सकती है। * अब मुझे अपने कई शीर्षलेखों को अपने कोड को प्रतिलिपि बनाकर ' # अन्य लोगों में शामिल है। – user215721