तकनीकी रूप से, inline
कीवर्ड का अर्थ केवल कई अनुवाद इकाइयों में परिभाषा की अनुमति है। यही है, यदि आपके पास हेडर फ़ाइल में परिभाषित एक इनलाइन फ़ंक्शन है, और वह हेडर एकाधिक स्रोत फ़ाइलों में शामिल हो जाता है, तो यह ठीक है। गैर-इनलाइन, गैर-टेम्पलेट फ़ंक्शन के लिए, यह अवैध होगा।
लेकिन कंपाइलर्स कॉल किए जा रहे फ़ंक्शन के कोड को देखने में सक्षम होने का लाभ उठा सकते हैं और कर सकते हैं। यह न केवल इनलाइन फ़ंक्शंस के लिए होता है बल्कि यह भी कोई अन्य फ़ंक्शन होता है जिसका कोड दिखाई दे सकता है। कई कंपाइलर्स कोड को इनलाइन करने के बारे में एक अच्छा अनुमान लगाने का प्रयास करते हैं। कोड को रेखांकित करने से प्रोग्राम को बड़ा या छोटा, तेज या धीमा कर सकता है। यदि संकलक निर्धारित कर सकता है कि कोड को रेखांकित करते समय कोड तेज और छोटा दोनों होने की संभावना है, तो यह ऐसा करेगा। अन्यथा इसे व्यापार-बंद पर विचार करना होगा।
कई आधुनिक कंपाइलर्स लिंक-टाइम ऑप्टिमाइज़ेशन कर सकते हैं, जहां कोड को शुरू करने के लिए रेखांकित नहीं किया गया था, लिंक चरण के दौरान लिंक चरण के दौरान रेखांकित किया जा सकता है। कुछ अनुकूलन अवसर हो सकते हैं जो लिंक-टाइम तक देरी होने पर खो जाते हैं।
अपने अनुभव में, मैंने पाया है कि छोटे कार्यों को इनलाइन बनाना हमेशा आम तौर पर आकार और गति दोनों के लिए एक जीत है। बड़े कार्यों के लिए, मैं अक्सर यह प्रोग्राम को तेज़ी से बड़ा करता हूं लेकिन बड़ा लगता हूं, लेकिन मैंने यह भी देखा है कि यह शायद ही कभी प्रोग्राम को धीमा और बड़ा बना देता है। यदि किसी विशेष फ़ंक्शन का प्रदर्शन महत्वपूर्ण है, तो आपको इनलाइन करने या नहीं करने का विकल्प बनाने में मदद करने के लिए माप करने की आवश्यकता होगी।
स्रोत
2015-01-19 16:15:33
जब आप एक हेडर फ़ाइल शामिल करते हैं, तो प्रीप्रोसेसर सचमुच उस कोड को कॉपी और पेस्ट करता है जहां आपने इसे शामिल किया था। – Andrew
मेरा सुझाव है कि आप यहां एक नज़र डालें: http://programmers.stackexchange.com/questions/180904/are-header-files-actually- अच्छी –
'इनलाइन' का अर्थ यह नहीं है कि "इस कोड को इनलाइन बनाएं" सी ++ में , लिंक समय नाम टकराव को हल करने के तरीके के साथ और अधिक करना है। "कोड इनलाइन डालने" का सी ++ मानक के संदर्भ में थोड़ा अर्थ नहीं है। – Yakk