1. Home
  2. Docs
  3. C++
  4. Fonksiyonlar
  5. Inline Fonksiyonlar

Inline Fonksiyonlar

C++ ile uygulama geliştirirken uygulamanın mümkün olan en hızlı şekilde yani gecikmenin en az olacağı şekilde çalışmasını isteriz. C ve C++ dillerini diğer dillerden ayıran en önemli avantajlardan birisi de zaten hızdır. Inline fonksiyonların da kullanılma sebeplerinden biri bize bu konuda sağladığı avantajlardır.

Peki inline fonksiyon nedir? Normal fonksiyon tanımından ne farkı vardır?

Normal bir fonksiyon tanımladığımızda, bu fonksiyon tanımı bellekte bir yer edinir ve derleyici bu fonksiyonun çağrıldığı yerlerde bu bellek bölgesine yönlendirir. Yönlendirme ve geri dönüş sebebiyle de bir gecikme yaşanır.

Inline tanımda ise derleyici inline fonksiyonun çağrıldığı yere fonksiyonun içeriğini yerleştiriyor ve bu sayede fonksiyon çağrısından kurtuluyor.

Inline fonksiyonların aslında makrolar gibi çalıştığını düşünebiliriz. Herkes böyle düşünüyor olacak ki genelde header dosyaları içinde bu tanımı daha çok görürsünüz.

Modern derleyiciler kod üzerinde kendi optimizasyonunu yaptığı için inline fonksiyon kullanmasak bile muhtemelen kullandığınız derleyici gerekli düzenlemeleri yapacaktır.

Peki bir inline fonksiyon nasıl tanımlanır?

#include <iostream>

inline int max(int first, int second)
{
    if (first>second) return first;
    return second;
}


int main(int argc, const char** argv)
{
    std::cout << max(5, 10) << std::endl;

    return 0;
}

Burada bir inline fonksiyonunun nasıl tanımlandığını görebilirsiniz. Bu tanımın aslında derleyici tarafından şu şekilde düzenlendiğini düşünebiliriz.

int main(int argc, const char** argv)
{
    if (5 > 10) std::cout << 10 << std::endl;
    else std::cout << 5 << std::endl;

    return 0;
}

Bu kod sayesinde inline fonksiyonları daha iyi anlayabiliriz.

Tags , ,