Inline fonksiyonlar — derleyicinin (ama zorunlu değil) fonksiyon çağrısını, çağrı yerinde fonksiyonun kodunu doğrudan yerleştirerek değiştirebileceği fonksiyonlardır. Bunun için inline anahtar kelimesi kullanılır.
inline anahtar kelimesi derleyiciye bir öneri sunar, ancak zorunluluk getirmez: fonksiyon çok karmaşık olduğunda göz ardı edilebilir.Kısıtlamalar ve riskler:
Örnek:
inline int add(int a, int b) { return a + b; } struct X { int get() const { return value; } int value; }; // get() inline olarak değerlendirilecektir
Soru: Inline anahtar kelimesi, fonksiyonun tüm çağrı noktalarında yerleştirileceğini garanti eder mi?
Cevap: Hayır. Derleyici, fonksiyonu inline olarak yerleştirip yerleştirmeyeceğine kendi içsel sezgilerine dayanarak karar verir. inline yalnızca bir tavsiyedir.
Hikaye
Finansal sistemde, on binlerce büyük inline fonksiyona sahip sıkça kullanılan bir logger yazıldı. Sistem büyüdükçe, ikili dosyanın boyutu katlanarak arttı, bu da bağlantı zamanının uzamasına ve sunucudaki önbellek verimliliğinin azalmasına yol açtı.
Hikaye
Çapraz platform yazılımına geçiş sırasında, bazı derleyicilerin (örneğin, MSVC ve GCC) inline'ı farklı şekilde işlemek için kullanımda olduğu, bazı fonksiyonların inline olarak genişletilmediği, bazılarının ise aksi şekilde davrandığı, bu durumun platformlar arasında hız ve uygulama boyutlarında tekrar edilemez farklılıklara neden olduğu tespit edildi.
Hikaye
Geliştirici sadece başlık dosyasında inline fonksiyonlar ilan etti, ancak uygulamayı ayrı bir cpp dosyasına taşıdı. Sonuç olarak, bağlantı sırasında multiple definition veya unresolved external hataları meydana geldi, çünkü inline fonksiyonların başlıklarda tanımlanması gerekirdi.