पुरातन सी और सी ++ में, inline
की तरह है register
एक संभव अनुकूलन के बारे में संकलक के लिए एक सुझाव (एक सुझाव से ज्यादा कुछ नहीं):।
आधुनिक सी ++ में, inline
लिंकर को बताता है कि, यदि विभिन्न अनुवाद इकाइयों में कई परिभाषाएं (घोषणाएं नहीं) पाई जाती हैं, तो वे सभी समान हैं, और लिंकर स्वतंत्र रूप से एक को रख सकता है और अन्य सभी को त्याग सकता है।
inline
यदि कोई फ़ंक्शन (चाहे कितना जटिल या "रैखिक") एक हेडर फ़ाइल में परिभाषित किया गया हो, तो कई स्रोतों को लिंकर द्वारा "एकाधिक परिभाषा" त्रुटि प्राप्त किए बिना इसे शामिल करने की अनुमति देना अनिवार्य है।
क्लास के अंदर परिभाषित सदस्य फ़ंक्शन डिफ़ॉल्ट रूप से "इनलाइन" होते हैं, जैसा कि टेम्पलेट फ़ंक्शन (वैश्विक कार्यों के विपरीत) हैं।
//fileA.h
inline void afunc()
{ std::cout << "this is afunc" << std::endl; }
//file1.cpp
#include "fileA.h"
void acall()
{ afunc(); }
//main.cpp
#include "fileA.h"
void acall();
int main()
{
afunc();
acall();
}
//output
this is afunc
this is afunc
FileA.h को दो। Cpp फ़ाइलों में शामिल करने पर ध्यान दें, जिसके परिणामस्वरूप दो उदाहरण हैं afunc()
। लिंकर उनमें से एक को त्याग देगा। यदि कोई inline
निर्दिष्ट नहीं है, तो लिंकर शिकायत करेगा।