У мовах програмування С та одиниця трансляції (англ. translation unit) — файл сирців разом з усіма включеними в нього за допомогою директиви #include заголовними та сирцевими файлами і без рядків коду, що виключені за допомогою умовних директив препроцесора.
Програма утворюється однією або кількома одиницями трансляції зкомпонованими разом. Одиниця трансляції, в свою чергу, утворюється з послідовності оголошень:
translation-unit: declaration-seqopt
На відміну від інших мов програмування (Паскаль, Java, C#), в Сі кожен з c
-файлів — «річ в собі», яка не залежить від інших c
-файлів. Тільки після того, як файли будуть відкомпільованими, компонувальник збере їх в єдину програму.
Множина одиниць трансляції
Традиційна техніка, при якій кожен c
-файл компілюється окремо, після чого об'єктні файли збираються в виконуваний файл компонувальником.
Одна одиниця трансляції
Техніка, при якій кілька c
-файлів об'єднуються не компонувальником, а за допомогою #include
. Наприклад:
// compile_me.cpp # include «foo.cpp» # include «bar.cpp»
// foo.cpp # include <iostream> // Стандартний заголовок # include «bar.hpp» // Заголовок функції 'bar' int main() { bar(); }
// bar.cpp # include <iostream> // Той самий заголовок (другий раз підключений не буде!) void bar() { ... }
Плюси такої структури: прискорюється повне складання, розширюється діапазон . Мінус — при невеликих змінах в коді перекомпілюється вся програма.
Примітки
- ISO/IEC 14882:2011, 2.1 Separate translation.
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U movah programuvannya S ta S odinicya translyaciyi angl translation unit fajl sirciv razom z usima vklyuchenimi v nogo za dopomogoyu direktivi include zagolovnimi ta sircevimi fajlami i bez ryadkiv kodu sho viklyucheni za dopomogoyu umovnih direktiv preprocesora Programa utvoryuyetsya odniyeyu abo kilkoma odinicyami translyaciyi zkomponovanimi razom Odinicya translyaciyi v svoyu chergu utvoryuyetsya z poslidovnosti ogoloshen translation unit declaration seqopt Na vidminu vid inshih mov programuvannya Paskal Java C v Si kozhen z c fajliv rich v sobi yaka ne zalezhit vid inshih c fajliv Tilki pislya togo yak fajli budut vidkompilovanimi komponuvalnik zbere yih v yedinu programu Mnozhina odinic translyaciyiTradicijna tehnika pri yakij kozhen c fajl kompilyuyetsya okremo pislya chogo ob yektni fajli zbirayutsya v vikonuvanij fajl komponuvalnikom Odna odinicya translyaciyiTehnika pri yakij kilka c fajliv ob yednuyutsya ne komponuvalnikom a za dopomogoyu include Napriklad compile me cpp include foo cpp include bar cpp foo cpp include lt iostream gt Standartnij zagolovok include bar hpp Zagolovok funkciyi bar int main bar bar cpp include lt iostream gt Toj samij zagolovok drugij raz pidklyuchenij ne bude void bar Plyusi takoyi strukturi priskoryuyetsya povne skladannya rozshiryuyetsya diapazon Minus pri nevelikih zminah v kodi perekompilyuyetsya vsya programa PrimitkiISO IEC 14882 2011 2 1 Separate translation Div takozhPravilo odnogo viznachennya