2013-07-17 6 views
8

मैंने में this item पर ध्यान दिया - और मुझे यह काफी नहीं मिलता है।मुझे -inl.h फ़ाइलों का उपयोग कब करना चाहिए?

यदि मैं अन्य फ़ाइलों द्वारा शामिल शीर्षलेख के अलावा किसी फ़ाइल में एक इनलाइन विधि या फ़ंक्शन डालता हूं, तो यह कक्षा का एक तरीका नहीं होगा; और यह केवल कोड के बिट्स के लिए प्रयोग योग्य होगा जिसमें इसे शामिल किया जाएगा। तो क्यों ऐसी -inl.h फाइलें भी हैं?

इसके अलावा, हम भी लंबे कार्यों को इनलाइन क्यों करना चाहते हैं? (यानी टेम्पलेट्स के मामले में, जब हमें कोड को तत्कालता के लिए हेडर फाइलों में रखना होगा)

+0

"लंबा" शायद सापेक्ष है, और इस मामले में मैं मानता हूं कि Google एक से अधिक पंक्तियों को लंबे समय तक मानता है – PlasmaHH

उत्तर

7

यह अक्सर लंबे फ़ंक्शन टेम्पलेट्स के लिए किया जाता है। नियमित शीर्षलेख my_functions.h में केवल घोषणाएं होती हैं, और कार्यान्वयन फ़ाइल my_functions-inl.h में कार्यान्वयन होते हैं। कारण यह है कि फ़ंक्शन टेम्पलेट्स cannot be put in .cpp फ़ाइलें। ध्यान दें कि X.h फ़ाइल में X-inl.h फ़ाइल शामिल है, न कि दूसरी तरफ।

अन्य पुस्तकालयों में अलग-अलग नामकरण सम्मेलन हैं: उदा। बूस्ट पुस्तकालयों में से कुछ टेम्पलेट हेडर और टेम्पलेट कार्यान्वयन फ़ाइलों के लिए .ipp के लिए .hpp का उपयोग करते हैं।

11

मैं सिर्फ गूगल सी में इस मद ++ स्टाइल गाइड कोडिंग का उल्लेख किया - और मैं काफी यह नहीं मिलता है।

उस गाइड को नमक के चुटकी से लें। कई दिशानिर्देश Google के विरासत कोडेबेस के साथ बातचीत करने में मदद करने के लिए हैं, और सामान्य सी ++ विकास के लिए विशेष रूप से अच्छी सलाह नहीं हैं।

तो ऐसे -inl.h फाइलें क्यों हैं?

कोई विशेष कारण नहीं है; मैं खुद ऐसा नहीं करता हूं। कुछ लोग उन्हें पसंद करते हैं क्योंकि यह मुख्य हेडर फ़ाइल में सामान की मात्रा को कम करता है, जो शीर्षलेख के उपयोगकर्ता आमतौर पर पढ़ना चाहते हैं, और कार्यान्वयन विवरण को अलग करते हैं, जिन्हें वे आम तौर पर परवाह नहीं करते हैं।

इसके अलावा, हम भी लंबे कार्यों को इनलाइन क्यों करना चाहते हैं?

कभी कभी, हम चाहिए: टेम्पलेट परिभाषाएँ किसी भी अनुवाद इकाई है कि टेम्पलेट को दर्शाता है में उपलब्ध होना चाहिए, ताकि वे (आमतौर पर) हेडर में होने की जरूरत है।

कभी-कभी, हम चाहते हैं: शीर्षलेख में फ़ंक्शन इनलाइन को कार्यान्वित करके, हमें इसके लिए एक अलग अनुवाद इकाई बनाने और जोड़ने के बारे में चिंता करने की आवश्यकता नहीं है। यह पुस्तकालय वितरित करने के लिए और अधिक सुविधाजनक बना सकता है; संभवतः लंबे समय तक निर्माण की लागत पर।

संबंधित मुद्दे