14.3. Funksiyalarning tez chaqirilishi. Nomlar fazosi Parametrlari protsessorli registrlar orqali uzatiladigan funksiyalarni e’lon
qilishda _fastcall modifikatori qo‘llanadi:
_fastcall(
)
Bu kalit-so‘z name nomli dastlabki uchta turlashtirilgan parametr (ro‘yxat
bo‘yicha chapdan o‘ngga) stek orqali emas, balki AX, BX va DХ protsessorli
registrlar orqali uzatilishini aniqlaydi. Agar parametr qiymati registrga sig‘masa,
ya’ni parametr orqali suzuvchi nuqtali sonlarni, tuzilmalar va funksiyalarni uzatishda,
u qo‘llanmaydi,
114
Хolisanillo
aytganda,
funksiyalarning
tez
chaqirilishi
C++Builder
kompilyatorininggina vazifasiga kirmaydi. Voqealarga ishlov berish funksiyalarini
e’lon qilishda_fastcall ning qo‘llanishiga aloxida e’tibor berish kerak. Bu voqealarni
C++Builder avtomatik tarzda generatsiya qiladi.
Oddiy ilovalarning ko‘pi dastlabki dastur matniga ega bo‘lgan bir nechta fayldan
iborat. Bu fayllar dasturchilar guruxi tomonidan yaratilishi va xizmat ko‘rsatilishi
mumkin. Pirovard natijada barcha fayllar birga to‘planadi va tayyor ilovani
yig‘ishdan iborat bo‘lgan so‘nggi protseduradan o‘tadi.
An’anaviy tarzda qabul qilinishicha, biron bir lokal soxa (funksiya, sinf tanasi
yokitranslyatsiya moduli) ga kiritilmagan barcha nomlar umumiy global ismlarni
bo‘lib olishadi. Shuning uchun, agar ayrim modullarni yig‘ish jarayonida nomlar
takroran aniqlangani ayon bo‘lib qolsa, bu holda har bir nomni qandaydir yo‘l bilan
farqlash zarurligini talab qiladi. C++da bu muammoning yechilishi nomlar
fazosi(namespace) mexanizmi zimmasiga yuklatilgan.
Bu mexanizm ilovani bir necha tarmoq tizimlar (tizimchalar) ga bo‘lib tashlash
imkonini beradi, bunda har bir tarmoq tizim nomlarni tanlashda erkin ish tutadi,
hamda uning muallifi xuddi shunday ismlardan biron boshqa kimsa foydalanishi
mumkinligiga qayg‘urmasa ham bo‘ladi. Har bir tarmoq tizim global nomlar umumiy
fazosida o‘zining paydo bo‘lganini namespace kalit-so‘zdan keyin kelgan unikal
identifikator yordamida identifikatsiya qiladi:
namespace {[]}
Identifikatsiya qilingan nomlar fazosi elementlariga kirishning uchta usuli
mavjud:
Konkret elementga ochiq-oydin kirish kvalifikatsiyasi:
ALPHA :: vart;//ALPHA BETA::F1dagi o‘zgaruvchiga kirish; //BETA dagi
o‘zgaruvchiga kirish
Barcha elementlarga kirish:
using namespace::ALPHA;//ALPHA dagi barcha nomlarga kirish
Nomlarning lokal fazosida yangi identifikatorning e’lon qilinishi:
using :: new_name;//identifikatorning qo‘shilishi