V programovacích jazycích je překladová jednotka maximálním blokem zdrojového textu , který lze fyzicky přeložit (převést na interní strojovou reprezentaci; zejména zkompilovat ). Důležitý koncept jazyků C a C++ .
Pojem „překladová jednotka“ se objevil s prvními interaktivními počítači: v té době byl nedostatek paměti takový, že počítač v ní nemohl udržet kompilátor, text velkého programu a výsledný kód současně. . Musel jsem zkompilovat po částech a pak použít speciální program - linker - k sestavení spustitelného souboru z kompilovaných modulů .
Nyní je text rozdělen do překladových jednotek primárně kvůli opětovnému použití kódu . A moderní optimalizační kompilátory jsou často tak pomalé, že přestavba velkého programu může trvat desítky minut.
V programovacích jazycích C a C ++ je překladová jednotka zdrojový text dodávaný na vstup kompilátoru (soubor s příponou nebo ) se všemi soubory v něm obsaženými . .c.cpp
Na rozdíl od mnoha jiných programovacích jazyků ( Pascal , Java , C# ) jsou v C překladové jednotky kompilovány samostatně bez překrývání. "Dokování" jednotek do programu je monitorováno výhradně linkerem . Existují dvě technologie pro psaní programů v jazyce C: „mnoho překladových jednotek“ a „jednotka překladu“.
Tradiční technikou je ckompilace každého -souboru samostatně, načež jsou objektové soubory sestaveny do spustitelného souboru linkerem.
Technika, kde se více csouborů nekombinuje pomocí linkeru, ale pomocí #include. Například:
// kompilujte_me.cpp #include "foo.cpp" #include "bar.cpp" // foo.cpp #include <iostream> // Velké standardní záhlaví #include "bar.hpp" // Záhlaví funkce 'bar' int main () { bar (); } // bar.cpp #include <iostream> // Stále stejně velké záhlaví (nebude zahrnuto podruhé!) voidbar ( ) { ... }Výhody takové konstrukce: urychluje se úplná montáž, rozšiřuje se rozsah možných optimalizací . Zjednodušuje adaptaci cizích knihoven pro exotické kompilátory (například Embarcadero C++ Builder v režimu __fastcall) [1] . Mínus - s malými změnami v kódu je celý program překompilován.
Velké knihovny s otevřeným zdrojovým kódem (jako je SQLite ) jsou často vydávány jako jediná překladatelská jednotka. Zároveň jsou naprogramovány "po staru", s obrovským počtem jednotek a jsou přenášeny z jednoho typu na druhý pomocí jednoduchého preprocesoru.