Tarjima bo'limi (dasturlash) - Translation unit (programming)

Yilda C va C ++ dasturlash tili terminologiyasi, a tarjima birligi bu C yoki C ++ ga yakuniy kirishdir kompilyator shundan ob'ekt fayli hosil bo'ladi.[1] Oddiy foydalanishda ba'zan uni a deb atashadi kompilyatsiya birligi. Tarjima bo'limi taxminan a dan iborat manba fayli tomonidan qayta ishlanganidan keyin C oldingi protsessori, demak sarlavha fayllari sanab o'tilgan # shu jumladan direktivalar so'zma-so'z kiritilgan, ichidagi kod bo'limlari #ifndef kiritilishi mumkin va makrolar kengaytirilgan.

Kontekst

C dasturi quyidagilardan iborat birliklar deb nomlangan manba fayllari (yoki fayllarni oldindan qayta ishlash), bu manba kodidan tashqari, uchun ko'rsatmalarni o'z ichiga oladi C oldingi protsessori. Tarjima birligi - bu C preprocessorining natijasi - u tugagandan so'ng manba faylidir oldindan ishlov berilgan.

Dastlabki ishlov berish, barchasini rekursiv ravishda almashtirish uchun manba faylini kengaytirishdan iborat # shu jumladan direktivada e'lon qilingan so'zma-so'z fayl bilan ko'rsatmalar (odatda sarlavha fayllari, lekin ehtimol boshqa manba fayllari); ushbu qadamning natijasi a tarjima bo'limi oldindan ishlov berish. Keyingi qadamlarga quyidagilar kiradi makro kengayish ning #define direktivalar va shartli kompilyatsiya ning #ifdef direktivalar va boshqalar; bu tarjima birligini oldindan ishlov berishni a ga aylantiradi tarjima birligi. Tarjima birligidan kompilyator an hosil qiladi ob'ekt fayli, qo'shimcha ishlov berish mumkin va bog'langan (ehtimol boshqa ob'ekt fayllari bilan) ni shakllantirish uchun bajariladigan dastur.

E'tibor bering, protsessor asosan agnostik tilda va a leksik protsessor, da ishlash leksik tahlil daraja - bu ajralishni amalga oshirmaydi va shuning uchun C sintaksisiga xos biron bir ishlov berolmaydi. Kompilyatorga kirish tarjima birligi bo'lib, u kompilyatsiya boshlanishidan oldin qayta ishlangan biron bir protsessor direktivasini ko'rmaydi. Berilgan tarjima bo'limi asosan faylga asoslangan bo'lsa-da, kompilyatorga berilgan haqiqiy manba kodi dasturchi ko'rgan manba faylidan sezilarli darajada farq qilishi mumkin, ayniqsa, sarlavhalarning rekursiv kiritilishi tufayli.

Qo'llash sohasi

Tarjima birliklari a ni belgilaydi qamrov doirasi, taxminan fayl doirasi va shunga o'xshash tarzda ishlaydi modul doirasi; C terminologiyasida bu shunday ataladi ichki aloqa, bu ikki shakldan biri bog'lanish C.da funktsiya bloki tashqarisida e'lon qilingan ismlar (funktsiyalar va o'zgaruvchilar) faqat ma'lum bir tarjima bo'linmasida ko'rinishi mumkin, bu holda ular ichki aloqaga ega deyiladi - ular bog'lovchiga ko'rinmaydi - yoki ko'rinadigan bo'lishi mumkin boshqa ob'ekt fayllari, bu holda ular deyiladi tashqi aloqa va bog'lovchiga ko'rinadi.

C modullar tushunchasiga ega emas. Shu bilan birga, alohida ob'ekt fayllari (va shu sababli ob'ekt fayllarini yaratish uchun ishlatiladigan tarjima birliklari) alohida modullarga o'xshash ishlaydi va agar manba faylida boshqa manba fayllari bo'lmasa, ichki bog'lanish (tarjima birligining ko'lami) "fayl" deb o'ylanishi mumkin qamrov, shu jumladan barcha sarlavha fayllari ".

Kodni tashkil etish

Loyiha kodining asosiy qismi odatda a bo'lgan fayllarda saqlanadi .c qo'shimchasi (yoki .cpp, .cxx yoki .cc uchun C ++, ulardan .cpp eng an'anaviy ravishda ishlatiladi). Qo'shiladigan fayllar odatda a ga ega .h qo'shimchasi ( .hpp yoki .hh C ++ uchun ham ishlatiladi, ammo .h hatto C ++ uchun ham keng tarqalgan) va odatda bir nechta manba fayllariga sarlavhalar kiritilganda nom ziddiyatlaridan qochish uchun odatda funktsiya yoki o'zgaruvchan ta'riflarni o'z ichiga olmaydi. Sarlavha fayllari boshqa sarlavha fayllarida bo'lishi mumkin va ko'pincha ular tarkibiga kiradi. Bu hamma uchun odatiy amaliyotdir .c hech bo'lmaganda bittasini kiritish uchun loyihadagi fayllar .h fayl.

Shuningdek qarang

Adabiyotlar