c++ - सी++ हैडर ऑर्डर




header include (7)

"कैसे" स्पष्ट नहीं है, लेकिन "क्या" है। आपका लक्ष्य यह सुनिश्चित करना है कि जिस क्रम में आप हेडर फाइलें शामिल करते हैं, वह कभी मायने रखता नहीं है (और मेरा मतलब है "कभी नहीं!")।

एक अच्छी मदद यह जांचना है कि सीपीपी फाइलों (प्रत्येक हेडर फ़ाइल के लिए एक) बनाने के दौरान हेडर फाइल संकलित करते हैं या नहीं, जिनमें से केवल उनमें से एक शामिल है।

शीर्षलेख / सीपीपी फ़ाइल में हेडर को किस क्रम में घोषित किया जाना चाहिए? जाहिर है, जो बाद के शीर्षकों द्वारा आवश्यक हैं, पहले होना चाहिए और कक्षा विशिष्ट शीर्षलेख सीपीपी दायरे में होना चाहिए, हेडर स्कोप नहीं, लेकिन क्या एक सेट ऑर्डर सम्मेलन / सर्वोत्तम अभ्यास है?


.cpp फ़ाइलों के लिए, आपको कक्षा के शीर्षलेख या जो भी आप पहले कार्यान्वित कर रहे हैं, उसे शामिल करना चाहिए, ताकि आप उस मामले को पकड़ सकें जहां इस शीर्षलेख में कुछ शामिल है। इसके बाद, अधिकांश कोडिंग दिशानिर्देशों में पहले सिस्टम हेडर शामिल होते हैं, प्रोजेक्ट हेडर दूसरे, उदाहरण के लिए Google C ++ स्टाइल गाइड


एक हेडर फ़ाइल में आपको सभी हेडर को संकलित करने के लिए शामिल करना होगा। और कुछ शीर्षकों की बजाय आगे की घोषणाओं का उपयोग करना न भूलें।

एक स्रोत फ़ाइल में:

  • हेडर फ़ाइल से मेल खाता है
  • आवश्यक परियोजना शीर्षलेख
  • तीसरे पक्ष के पुस्तकालय शीर्षलेख
  • मानक पुस्तकालय शीर्षलेख
  • सिस्टम हेडर

उस क्रम में आप अपनी किसी भी शीर्षलेख फ़ाइलों को याद नहीं करेंगे जो पुस्तकालयों को स्वयं ही शामिल करना भूल गए हैं।


मैं उन्हें वर्णानुक्रम में क्रम में उपयोग करता था (खोजने में आसान)


यदि किसी शीर्षलेख को अन्य शीर्षकों की आवश्यकता होती है तो यह उस शीर्षलेख में उन्हें शामिल करता है।

अपने कोड को व्यवस्थित करने का प्रयास करें ताकि आप पॉइंटर्स या संदर्भ पास कर सकें और आगे बताएं कि आप कहां कर सकते हैं।

कार्यान्वयन में, जो हेडर इसे परिभाषित करता है उसे पहले सूचीबद्ध किया जाना चाहिए (यदि आप पीएच का उपयोग कर रहे हैं तो विजुअल स्टूडियो को छोड़कर STDafx पहले जाएगा)।

मैं आमतौर पर उन्हें सूचीबद्ध करता हूं जैसा कि मुझे चाहिए।


यह निर्भरता की बात है और यह आपके शीर्षकों में जो कुछ भी डालता है उस पर निर्भर करता है। एक तथ्य यह है कि आप इसके बारे में वास्तव में कुख्यात हो सकते हैं और अपने सख्त शामिल रखने के लिए कम कर सकते हैं लेकिन अंत में आप एक ऐसे परिदृश्य में भाग लेंगे जहां आप समावेशन गार्ड का उपयोग करना चाहते हैं।

#ifndef MY_HEADER_H
#define MY_HEADER_H
//...
#endif

समस्या शुरुआत में स्पष्ट नहीं है, लेकिन आपके सॉफ़्टवेयर की जटिलता बढ़ने पर आपकी निर्भरताएं भी बढ़ती हैं। आप अच्छी तरह से कर सकते हैं, और इसके बारे में स्मार्ट बन सकते हैं लेकिन बड़ी सी ++ परियोजनाओं को आमतौर पर शामिल किया जाता है। आप कोशिश कर सकते हैं, लेकिन आप केवल इतना ही कर सकते हैं। तो मेहनती रहें और अपने शामिल होने के बारे में सोचें, हां! लेकिन आप निश्चित रूप से कुछ बिंदु पर चक्रीय निर्भरता प्राप्त करेंगे और यही कारण है कि आपको शामिल करने वाले गार्ड की आवश्यकता है।


Google सी ++ स्टाइल गाइड, नाम और ऑर्डर शामिल हैं :

Dir / foo.cc में, जिसका मुख्य उद्देश्य dir2 / foo2.h में सामग्री को कार्यान्वित करना या परीक्षण करना है, क्रम में निम्नानुसार शामिल करें:

  • dir2 / foo2.h (पसंदीदा स्थान - नीचे विवरण देखें)।
  • सी सिस्टम फाइलें।
  • सी ++ सिस्टम फाइलें।
  • अन्य पुस्तकालयों 'एच फाइलें।
  • आपकी परियोजना की। एच फाइलें।




code-organization