Kas072008

C Dilinde Macro Kullanımı

Yazar: Gökhan ÖZİÇ Yayınlanma Saati: 05:38
Kategori(ler): C / C++

     Developerlar olarak aslında en büyük yardımcılarımız kuşkusuz fonksiyonlardır (metodlar). CPU yükünü oldukça azaltan ve algoritmayı daha verimli ve hızlı hale getiren yapılardır fonksiyonlar (metodlar). Ancak; fonksiyonların uzun uzun yazılmalarından ziyade başka bir yöntem daha var ki, fonksiyonda yazdığınız birkaç satır kodu (özellikle kısa ve tek göreve sahip olan fonksiyonlarda) tek satırda yazarak aynı görevin yapılmasını sağlar. Macrolardan bahsediyorum tabiiki. Kullanımı rahat ve geliştirme sürecini kısaltan macrolar, fonksiyonlardan sonra (kimisine göre önce) en büyük yardımcılardan bir tanesi. Şimdi birkaç fonksiyon ve macro örneği yapalım ve görelim macrolar nasıl çalışıyor. Kolaydan gidelim ve iki integerın büyük olanını return eden bir fonksiyon yazalım.

#include <stdio.h>

int Max(int a, int b)
{
    if(a > b)
        return a;
    else
        return b;
}


int main()
{
    int a, b;
    printf("Enter two integers: ");
    scanf("%d%d", &a, &b);
    
    printf("The maximum of two integers is %d.\n", Max(a, b));

	return 0;
}

     Gördüğünüz üzere fonksiyonumuz, aldığı a ve b değerlerinden büyük olanı return ediyor ve main de yazdırılıyor. Çok kolay bir algoritma. Peki bunu macro ile yapsak nasıl yapardık. O da şu şekilde.

#include <stdio.h>

#define MAX(a, b) ( a > b ? a : b)

int main()
{
    int a, b;
    printf("Enter two integers: ");
    scanf("%d%d", &a, &b);
    
    printf("The maximum of two integers is %d.\n", MAX(a, b));

	return 0;
}

     Gördüğünüz gibi fonksiyonla yaptığımız örneğin aynısını şimdi macro ile yaptık ve sadece bir satır sürdü. Farkettiyseniz macro için aldığı parametrelere değişken tiplerini yazmam da gerekmedi. Macroların avantajlarından biri de bu. Gönderdiğimiz değişkenin tipleri önemli değil. Yazdığınız macro her değişken tipinde görevini yerine getiriyor ve algoritmada herhangi bir upgrade yapmanız gerekmiyor. Onu da örneklendirelim. Yukarıda yazdığımız kodu bu sefer de iki double number için yapalım ve görelim.

#include <stdio.h>

#define MAX(a, b) ( a > b ? a : b)

int main()
{
    double a, b;
    printf("Enter two integers: ");
    scanf("%lf%lf", &a, &b);
    
    printf("The maximum of two integers is %0.2f.\n", MAX(a, b));

	return 0;
}

     Gördüğünüz gibi değişkenleri değiştirdik ve macromuz hala görevini yerine getiriyor. Macrolar fonksiyonlardan farklı olarak değişken tipi bağımsız olarak çalışıyorlar ve bu çok büyük bir artı. Macroları kurgulamak tamamen size bağlı. Algoritma geliştirmeyi gerçekten hızlandırıyor.



Etiket(ler): ,



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

E-mail | Permalink | Trackback | Yazı RSSRSS comment feed 0 Yorumlar

Yorum ekle




  Country flag
biuquote
  • Yorum
  • Canlı önizleme
Loading