Your Ad Here

24 Ocak 2008

C ÖNDERLEYİCİSİ KOMUTLARI


ÖNDERLEYİCİ ve MACROLAR

Bir program içinde uzun kodlama yapmak yerine kodlamayı kolaylaştırması açısından işlevler veya "macro" kullanmak gerekir. Eğer kısaltmak için kullanılacak kodlama bir işlev haline dönüştürülünce daha da uzuyorsa "macro" tanımlamak daha iyi olabilir. Bir program içinde aynı değişmezi bir adla anmak ve bu adı tanımlamak, ileride değişmezin değerini değiştirmek söz konusu olduğunda o değişmezin bulunduğu tüm deyimleri arayıp tek tek düzeltmek yerine bu değişmez yerine tanımlanan adın değerini değiştirmek daha kolay olur.

Örneğin kullanacağımız değişmez 0 veya 1 ise, program içinde DOGRU ve YANLIS için veya EVET ve HAYIR için aynı değişmez kullanılmış olabilir. Programda yapılan değişiklikle EVET ve HAYIR yerine kullanılacak 0 ve 1 bundan böyle 1 ve 2 olacak denildiğinde, program içindeki 0 ve 1 değişmezlerinin tek tek aranması, EVET ve HAYIR için kullanılmış olanların belirlenip yeni kurala göre değiştirilmesi yeni hatalara neden olabileceği gibi çok da zaman alabilir. Halbuki EVET ve HAYIR adlı tanımlar bulunsa ve bu tanımları 0 ve 1 değerinden 1 ve 2 değerine değiştirsek, bir derleme ile tüm değişiklik hataya neden olmadan uygulanmış olur.

ÖN DERLEYİCİ KOMUTLARI

C dilinde önderleyici için #define deyimi kullanılır. Burada "#" satırın ilk kolonundan başlamalıdır. En azından bazı C derleyicileri için bu zorunludur.

Bir değişmeze ad verme işlemi için :

    #define DEGISMEZ_ADI   {deger}
    

tanımı kullanılır. Önderleyici kodlama içinde "DEGISMEZ_ADI" gordüğü her yere bu tanımdaki değeri taşır.

    örneğin :
    
    #define VAR        1
    #define YOK        0
    

Bir değer, kaynak programda bir satıra sığmıyorsa, satırın sonuna konan "\" simgesi satır sonundaki '\n' (yenisatır) simgesini kaldırır. Böylece "define" tanımı ilk geçerli yenisatır simgesine kadar uzatılmış olur.

Define deyimi macro tanımlamakta da kullanılır. Macro tanımlarında macro adından sonra yenisatır simgesine kadar olan tüm bilgi macro tanımı olarak kabul edilir. Macro tanımlarında da "\" simgesi kuralı geçerlidir. Macrolarda parametre kullanılabilir. Parametreler macro adından sonra açılan parantezde belirtilir. Parametreler için açılan parantezlerle macro adı arasında boşluk olmamalıdır. Yoksa önderleyici parametre tanımını macronun kendisi zannederek hatalı açılım yapar. Macroya ait parametreler macro içinde kullanılırken mutlaka parantez içinde yazılmalıdır. Yoksa macro parametresi olarak bir aritmetik deyim kullanılırsa, macro açıldığında işlem önceliği sıralamasında hatalar oluşabilir.

    örnek :
    
    #define my_abs(x)   ((x) >= 0) ? (x) : (-x)
    

Bu örnekte "my_abs" macro tanımı parametrenin mutlak değerini kullanmak için hazırlanmıştır.


Ana Sayfaya   Teknik Bilgiler Sayfasina


Aglar Aglink Agteknik C-Kodlama C-Önişleme CRC/LRC DEA etcsrv Çatal (fork) ilet inetd Make Msg Auth Özyinelemeli Robotlar için SDLC Güvenlik Seri uçlar SNA LU0 SNA LU6.2 tcp/ip tcp Programı Unix vi Editör