kodyaziyorum.com Ana Sayfa

@kodyaziyorum.com E-Posta Girişi @kodyaziyorum.com Giriş
  Aktif Konular Aktif Konular
  SSS SSS  Forumu Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

Anasayfa Anasayfa » Programlama Dilleri » MS-Dos Programlama Dilleri » C

Makro Nedir ?

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Konu Seçenekleri Konu Seçenekleri
ahmet007 Açılır Kutu Gör
Süper Yazılımcı
Süper Yazılımcı
Simge

Kayıt Tarihi: 05 Aralık 2005
Aktif Durum: Aktif Değil
Gönderilenler: 415
  Alıntı ahmet007 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Makro Nedir ?
    Gönderim Zamanı: 19 Mart 2006 Saat 08:11

MAKRO

Makro Nedir ?

Makro, bir #define satirindan baska birsey degildir. Fakat icinde islemler yapabildigi icin, ona ozel bir isim verilmistir. Ornegin ucuncu satirda, iki rakamin hangisi buyukse onu donduren MAX isimli bir makro tanimliyoruz. Bundan sonra on-derleyici ne zaman MAX termini ve arkasindan parantezi gorurse, bu parantezlerin arasinda iki tane deger bulacagini farz eder, ve tanimda bulunan deyimi, buraya koyar. Ornegin, onikinci satira gelindiginde, "A" yerine "index" ve "B" yerine de "sayac" konur.

Ayni sekilde "MIN" isimli makro da kendisine gecirilen iki rakamin hangisi daha kucukse, o degeri dondurur.

Bu makrolarda bir suru fazlalik parantez goreceksiniz. Bunlarin nedeni, bir sonraki programda anlasilacak..

#define HATALI(A) A*A*A /* Kup icin hatali makro */
#define KUP(A) (A)*(A)*(A) /* Dogusu ... */
#define KARE(A) (A)*(A) /* Karesi icin dogru makro */
#define START 1
#define STOP 9

main()
{
int i,offset;

offset = 5;

for (i = START;i <= STOP;i++) {
printf("%3d in karesi %4d dir, ve kubu ise %6d dir..\n",
i+offset,KARE(i+offset),KUP(i+offset));

printf("%3d in HATALIsi ise %6d dir.\n",i+offset,HATALI(i+offset));
}
}

Ilk satira baktiginiza, HATALI isimli makronun bir rakamin kubunu aldigini goruyoruz. Gercektende, bu makro bazen dogru calismaktadir.

Programin kendisinde,i+offset 'in KUP unun hesaplandigi yeri inceleyelim. Sayet i 1 ise, offset de 5 olduguna gore, 1+5 = 6 olacaktir. KUP isimli makroyu kullanirken, degerler:

(1+5)*(1+5)*(1+5) = 6*6*6 = 216

olacaktir. Halbuki, HATALI yi kullanirsak, carpmanin onceligi, toplamadan fazla oldugundan, degerleri:

1+5*1+5*1+5 = 1+5+5+5 = 16

seklinde buluyoruz. Yani, parantezler, degiskenleri dogru bir sekilde birbirinden ayrimak icin gereklidir.

Programin gerisi basittir, ve sizin incelemenize birakilmistir..

Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu Gör

Akoren.com Kurtlar Vadisi Pusu