20.2 #define Yönergesi

20.2   #define Yönergesi

Bu önişlemci komutu, kaynak dosyada bir isim yerine başka bir isimin yerleştirilmesini sağlar. Programda kullanılan bu sembolik isimler başta ana program olmak üzere bütün alt programlarda da aynı değere sahiptir. Yani #define önişlemcisi ile tanımlanan her ne olursa olsun, tanımlama bütün fonksiyonlarda kullanılabilir. Bir çeşit genel (global) bildirim gibi davranır. Örneğin:

Program 20.3: #define önişlemcisinin kullanımı

 

Program 20.3 derleme işleminden önce #define ile verilen ilk sembolik isimler yerine ikinci isimler yerleştirildikten sonra program aşağıdaki durmuma gelir:

Bu önişlemciyi kullanak sembolik sabitler tanımlamak mümkündür. Örneğin:

gibi.

#define önişlemcisinin kullanımı için iyi bir örnek Program 20.4 de verilmiştir. Program km/s biriminde verilen bir hızı m/s birimine çevirir[4].

Program 20.4: #define önişlemcisinin kullanımı

 

ÇIKTI

 

5. ve 6. satırda tanımlanan sembolik sabitler km ve saat program içinde kullanıldığında sol taraflarındaki sayıyı sırasıyla 1000 ve 3600 ile çarparlar. 12. satırdaki yol değişkenine 100*1000.0 değeri atanır. Benzer olarak 13. satırdaki zaman değişkenine 1.2*3600.0 sayısı atanır. Dikkat edilirse sembolik sabitler kullanıldığında programın okunurluğu artmakta ve bundan dolayı hata ayıklama kolaylaşmaktadır.

#define önişlemcisi ile parametrik tanımlamalar veya global fonksiyonlar tanımlamak mümkün olur. Örneğin:

Program 20.5: Makro fonksiyon tanimlama

ÇIKTI

 

Programda tanımlanan kare(2) ifadesi (2)*(2) şeklinde yorumlar. Benzer durum diğer makrolar için de geçerlidir.

Makrolar C’de çok sık kullanılır. Örneğin, tek boyutlu bir dizinin boyutu öğrenilmek istendiğinde aşağıdaki makro kullanılabilir:

Son satırdaki işlemle, n değişkeninine (a dizisinin boyutu) 10 değeri atanır.

İşte ilginç bir makro daha. Daha önce anlatılan takas(a,b) fonksiyonu gösterici kullanmadan aşağıdaki makro ile yazılabilir:

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.