Одиниця трансляції
У мовах програмування С та С++ одиниця трансляції (англ. translation unit) — файл сирців разом з усіма включеними в нього за допомогою директиви #include заголовними та сирцевими файлами і без рядків коду, що виключені за допомогою умовних директив препроцесора.[1]
Програма утворюється однією або кількома одиницями трансляції зкомпонованими разом. Одиниця трансляції, в свою чергу, утворюється з послідовності оголошень:
translation-unit: declaration-seqopt
На відміну від інших мов програмування (Паскаль, Java, C#), в Сі кожен з c-файлів — «річ в собі», яка не залежить від інших c-файлів. Тільки після того, як файли будуть відкомпільованими, компонувальник збере їх в єдину програму.
Зміст |
Множина одиниць трансляції [ред.]
Традиційна техніка, при якій кожен c-файл компілюється окремо, після чого об'єктні файли збираються в exe-файл-компонувальником.
Одна одиниця трансляції [ред.]
Техніка, при якій кілька 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.
Див. також [ред.]
| На цю статтю не посилаються інші статті Вікіпедії.
Будь ласка, скористайтеся підказкою та розставте посилання відповідно до прийнятих рекомендацій.
|
