C Programlama

C dilinde makro

C dilinde makro
C dilinde bir makro, bir ad atanmış bir kod parçasıdır. Ad, programın herhangi bir yerinde kullanıldığında, programın derlenmesinden önce makro değeri değiştirilir. Bu yazımızda C dilinde makro nasıl yazılır detaylı olarak göreceğiz.

Aşağıdaki kodu göz önünde bulundurun:

BAŞLAT
TAM SAYI n=5;
PRINT("n'nin değeri %d'dir",n);
SON

Yukarıdaki kod geçerli bir C kodu değil.

Ancak aşağıdaki kod geçerlidir:

//Örnek 1.c
#define BAŞLAT int ana()
#define SON
#define INTEGER int
#define PRINT(A,B) printf(A,B)
BAŞLAT
TAM SAYI n=5;
PRINT("n'nin değeri %d'dir",n);
SON

Derlemeden önce, START, INTEGER, PRINT ve END makrosu değerleriyle değiştirildi ve kod geçerli bir C kodu oldu. Aşağıdaki komutu kullanarak kontrol edebiliriz:

gcc -E Örnek1.c

Bu komut, tüm makroları genişlettikten sonra gösterilecektir.

Şimdi farklı makro türleri göreceğiz:

1. Nesne benzeri makrolar:

Sözdizimi:

#define macro_name macro_value

Makro birden fazla satır alıyorsa aşağıdaki gibi yapabiliriz:

#define macro_name macro_value1 \
makro_değer2 \
makro_değer3
#define MAKS 200

Bu makro bir veri nesnesine benziyor, bu nedenle bu tür bir makro nesne benzeri makro olarak adlandırılır.

//Örnek2.c
//#Dahil etmek
#define MAKS 200
int ana()

printf("MAKS Değer: %d",MAKS);
0 döndür;

İçinde Örnek2.c, MAKS bir makro. Çıktıdan anlıyoruz ki MAKS değeri ile değiştirilir 200.

2. İşlev benzeri makrolar:

Sözdizimi:

#define macro_name() macro_value

makro_adı makronun kullanıcı tanımlı adıdır. parantez çifti sonra koymak zorunda makro_adı. arasında boşluk bırakılamaz makro_adı ve parantez. Bu tür makrolarda argümanları da iletebiliriz.

#define ekle(x,y) x+y

Bu makro bir işlev çağrısına benziyor, bu nedenle bu tür makrolara işlev benzeri makro denir.

//Örnek3.c
#define ekle(x,y) x+y
int ana()

int a;
yüzer b;
a = ekle(4,5);
b = ekle(2.5,3.6)
0 döndür;

Örnek3'te.c, C'nin fonksiyonunun aksine, makronun sadece kodu hesaplamadan argümanlarla değiştirdiğini gördük. Böylece aynı makroyu kullanarak farklı veri tiplerini iletebiliriz.

Makro ismi ile parantez arasına bir boşluk koyarsak, nesne benzeri bir makro ile aynı şekilde çalışır. Aşağıdaki C Örneği bunu göstermektedir.

//Örnek4.c
#define ekle (x,y) x+y
int ana()

int a;
yüzer b;
a = ekle(4,5);
b = ekle(2.5,3.6)

Örnek4'te.c, makro eklemenin (x,y) x+y ile değiştirildiğini gördük . Nesne benzeri bir makro ile aynı.

3. Token Yapıştırma için Makro:
C dilinde, belirteç yapıştırma için ## operatörü kullanılır. Bu operatörü kullanarak iki geçerli jetonu tek bir geçerli jetonda birleştirebiliriz.
Misal:

//Örnek5.c
#define MARGE(x,y) x##y
int ana()

int sayı = KENARLIK(52,34);
0 döndür;

Geçerli bir belirteç oluşturmayan belirteç yapıştırmayı denersek, C derleyicisi bir hata veya uyarı verir.

//Örnek6.c
#define MARGE(x,y) x##y
int ana()

int sayı = KENARLIK(52,+);
0 döndür;

İçinde Örnek6.c, bir hata mesajımız var çünkü iki jetonun birleşiminden sonra geçersiz bir jeton '52+' alıyoruz.

4. Stringizing için Makro:
C dilinde, bir makro parametresini bir dize sabitine dönüştürmek için # operatörü kullanılır. Bir # operatörü bir makro parametresinden önce geldiğinde, parametre bir dize değişmez değerine dönüşür. Stringizing, nesne benzeri ve işlev benzeri makrolar için kullanılabilir.
Misal:

//Örnek7.c
#define STRINGIZING(x) #x
int ana()

printf(STRINGIZING(Merhaba Dünya) );
0 döndür;

İçinde Örnek7.c STRINGIZING makrosunu kullanan bir "Merhaba Dünya" dizemiz var.

Sonuç:

Bu makale, makro benzeri her tür hakkında bilgi edinmiştir Nesne benzeri makrolar, İşlev benzeri makrolar, Token Yapıştırma için Makro, Stringizing için Makro ve Stringizing için Makro C dilinde. Artık C programımızda hiç şüphesiz bir makro kullanabiliriz.

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...