Препроцессор директивалари


Препроцессор воситалари ёрдамида макро алмаштириш



Download 1,55 Mb.
bet15/22
Sana26.03.2022
Hajmi1,55 Mb.
#512181
1   ...   11   12   13   14   15   16   17   18   ...   22
Bog'liq
PREPROZESSO

Препроцессор воситалари ёрдамида макро алмаштириш

  • Макрос аниқлашига кура битта символлар кетма кетлигини бошқаси билан алмаштиришга мўлжалланган. Алмаштиришни амалга ошириш учун мос макро аниқланиш берилиши керак. Содда макро аниқланиш биз амалга оширдик, масалан директива ёрдамида матнни идентификатор билан алмаштирамиз
  • #define идентификатор алмаштирилувчи_матн
  • #define директиваси ёрдамида дастурчи таянч ёки таркибий турга ўз белгилашини киритиши мумкин. Масалан қуйидаги директива
  • #define REAL long double
  • long donble турни номини REAL деб киритяпти. Дастур давомида аниқ объектларни, REAL дан фойдаланиб тафсифлашимиз мумкин бўлади у худди long double билан тафсифлаган билан баробар бўлади масалан :
  • REAL х, array [6];
  • #define буйруғидаги идентификатор константа номи каби хам аниқланиши мумкин экан.

Умумий холда идентификатор бир қанча ифодаларни ифодалаши хам мумкин, масалан :

  • Умумий холда идентификатор бир қанча ифодаларни ифодалаши хам мумкин, масалан :
  • #define RANGE ((INT_MAX)-(INT_MIN)+1)
  • Алмаштирилувчи сатр таркибига кирувчи идентификаторлар препроцессорли аниқланган уларнинг қийматлари ўрнига қўйилган бўлиши мумкин.
  • Фараз қилайлик занжирли алмаштиришни #define директиваси воситасида амалга оширамиз. Бунда катта имкониятга эга бўлган параметрли макро аниқлашдан фойдаланамиз
  • #define номи( параметрлар рўйхати )алмаштирилувчи_матн
  • Бунда номи- макрос номи (идентификатор )
  • Параметрлар руйхати вергул билан ажратилган идентификаторлар . Макрос номи ва очилаётган кавс орасида пробел бўлмаслиги керак
  • макрос_номи {аргументлар рўйхати}
  • аргументлар руйхати вергул билан ажратилган. Хар бир аргумент - препроцессор лексемасидир.

Макро аниқлашнинг классик кўриниши:

  • Макро аниқлашнинг классик кўриниши:
  • #define max(a,b) (а < b ? b : а)
  • Иккита аргументдан каттасини топадиган ифодани дастурда формаллаштирадиган макро алмаштириш. Бундай аниқланган макро ни чақириш натижасида max(X,Y) қуйидаги ифода билан алмаштирилади
  • (Х<У? У:Х)
  • Қуйидаги конструкция эса max(Z,4)
  • Ифодани келтириб чиқаради (Z<4? 4:Z)
  • Биринчи холатда рост бўлганда Y ни акс холда X қайтаради. Иккинчи мисолда Z ўзгарувчининг қиймати константа 4 билан солиштирилади ва каттаси танланади.
  • Купинча қуйидаги ифодадан фойдаланилади
  • #define ABS(X) (Х<0? -(Х):Х)

Download 1,55 Mb.

Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   ...   22




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish