"इनलाइन" को समझने के लिए आपको इतिहास को समझने की जरूरत है और 20 साल पहले (और 30) की तरह जीवन क्या था।
हम उन कंप्यूटरों पर कोड लिख रहे थे जिनकी मेमोरी बहुत कम थी, इसलिए एक कंपाइलर के लिए एक बार में एक प्रोग्राम बनाने वाले सभी कोड को प्रोसेस करना संभव नहीं था। कंपाइलर भी बहुत धीमा था, इसलिए आप नहीं चाहते थे कि कोड को फिर से जमा करना पड़े जो कि बदला नहीं था - 210 से अधिक लेना (एक कंप्यूटर पर जो एक टॉप एंड कार की तुलना में अधिक लागत है) सभी कोड को फिर से जोड़ने के लिए कुछ परियोजनाओं के लिए सामान्य था इस पर काम किया।
इसलिए प्रत्येक कोड फ़ाइल को अलग से एक ऑब्जेक्ट फ़ाइलों में संकलित किया गया था। प्रत्येक ऑब्जेक्ट फ़ाइल फ़ंक्शन के "पते" के साथ, सभी फ़ंक्शन की सूची के साथ शुरू हुई। ऑब्जेक्ट फ़ाइल में कॉल के स्थान के साथ अन्य ऑब्जेक्ट फ़ाइलों में कॉल किए जाने वाले सभी कार्यों की एक सूची भी थी।
एक लिंकर पहले सभी ऑब्जेक्ट फ़ाइलों को पढ़ता है, और उनके द्वारा निर्यात किए गए सभी कार्यों की एक सूची का निर्माण करता है, साथ ही वे उस फ़ाइल में और उस पते पर थे। यह तब सभी ऑब्जेक्ट फ़ाइलों को फिर से रीडायरेक्ट करेगा, उन्हें प्रोग्राम फ़ाइल में आउटपुट करेगा, जबकि फ़ंक्शन के पते के साथ सभी "बाहरी" फ़ंक्शन कॉल को अपडेट करना होगा।
लिंकर बाहरी फ़ंक्शन कॉल के संदर्भ को ठीक करने के अलावा कंपाइलर द्वारा उत्पादित मशीन कोड को किसी भी तरह से परिवर्तित या अनुकूलित नहीं करता है। लिंकर ऑपरेटिंग सिस्टम का हिस्सा था और अधिकांश कंपाइलरों को प्रिफर करता है। जब लोगों ने एक नया संकलक लिखा, तो उन्हें वर्तमान लिंकर्स के साथ काम करने के लिए और वर्तमान ऑब्जेक्ट फ़ाइलों से लिंक करने में सक्षम होने के लिए आवश्यक था, अन्यथा सिस्टम कॉल नहीं किया जा सकता था।
कंपाइलर ने कभी भी कोड को ".c" या ".cpp" फ़ाइल में देखा था, यह सभी शामिल हेडर फ़ाइलों के साथ संकलन कर रहा था। इसलिए यह अन्य ".c" या ".cpp" फ़ाइलों में कोड के आधार पर कोई अनुकूलन नहीं कर सका।
"इनलाइन" कीवर्ड ने एक फ़ंक्शन (विधि) के शरीर को हेडर फ़ाइल में परिभाषित किया जा सकता है, इसलिए संकलक को कोड का संकलन करते समय फ़ंक्शन के कोड का उपयोग करने की अनुमति देता है। उदाहरण के लिए, आपके पास ather .cpp फ़ाइल में एक संग्रह वर्ग परिभाषित था, इस वर्ग में एक "isEmpty" विधि होगी, जिसमें कोड की एक पंक्ति होती थी, यदि किसी फ़ंक्शन के बजाय कॉल के बजाय परिणामी प्रोग्राम का एक बड़ा स्पीडअप होगा। फ़ंक्शन कॉल को इस एक पंक्ति के साथ बदल दिया गया था।
"इनलाइन" कीवर्ड को उस समय फ़ंक्शन कॉल की लागत से बचने के लिए डेटा के इनकैप्सुलेशन की अनुमति देने के लिए एक "सस्ते और आसान" तरीके के रूप में देखा गया था, इसके बिना बहुत सारे प्रोग्रामर ऑब्जेक्ट के निजी क्षेत्रों तक पहुंच पाएंगे। (मैक्रोस जहां एक बहुत बुरा तरीका "inlining" कोड है, जहां उस समय आम है।)
इन दिनों "लिंकर्स" बहुत सारे कोड ऑप्टिमाइज़ेशन करते हैं और कुछ टीम द्वारा कंपाइलर के रूप में लिखे जाते हैं। कंपाइलर अक्सर चेक करता है कि कोड सही है और इसे "कंप्रेस" करता है, जिससे मशीन कोड निर्माण का अधिकांश काम लिंकर पर चला जाता है।