Almashtiruvchi qatorda preprotsessor amallari.
Almashtiruvchi qatorni tashkil qiluvchi leksemalar ketma ketligida ‘#’ va ‘##’ amallarini qo’llash mumkin. Birinchi amal parametr oldiga qo’yilib, shu parametrni almashtiruvchi qator qavslarga olinishi kerakligini ko’rsatadi. Misol uchun:
#define print(A) print(#A”=%f”,A)
makro ta'rif berilgan bo’lsin. U holda makrosga print(a+b) murojaat quyidagi makro kengaytmani hosil kiladi: print(“a+b””%f”,a+b).
Ikkinchi ‘##’ amal leksemalar orasida qullanilib, leksemalarni ulashga imkon beradi.
Quyidagi makrota'rif berilgan bulsin:
#define zero(a,b,c) (bac)
#define one(a,b,c) (b a c)
#define two(a,b,c) (b##a##c)
Makrochakirik: Makrojoylash natijasi:
Zero(+,x,y) (bac)
One(+, x, y) (x + y)
Two(+,x,y) (x+y)
Birinchi holda bas yagona identifikator deb qaralib makro almashtirish amalga oshirilmaydi. Ikkinchi holda makros argumentlari bo’shlik belgilari Bilan ajratilgan bo’lib bu belgilar natijada ham saqlanib koladi. Uchinchi holda makros uchun ‘##’ amali qo’llanilgani uchun natijada bo’shlik belgilarsiz parametrlar ulanadi.
Dostları ilə paylaş: |