Una Translation Unit (TU) es el resultado de la fase de preprocesamiento de un archivo fuente de C o C++. Incluye el archivo fuente original y, recursivamente, todo el contenido de los archivos de cabecera (#include) que este y sus dependencias referencian, después de que todas las directivas de preprocesador (como #define, #ifdef, etc.) han sido expandidas y resueltas. Cada TU se compila de forma independiente en un archivo objeto (.o o .obj), que luego será enlazado con otras TUs y bibliotecas para formar un ejecutable o una biblioteca compartida.

Las Translation Units son un concepto central en la cadena de herramientas de compilación de C/C++. Herramientas como GCC (GNU Compiler Collection), Clang/LLVM y MSVC (Microsoft Visual C++) procesan cada archivo .c o .cpp como una TU separada. Por ejemplo, en un proyecto con `main.cpp`, `moduleA.cpp` y `moduleB.cpp`, cada uno de estos archivos, junto con sus includes, formará una TU distinta que se compilará a `main.o`, `moduleA.o` y `moduleB.o` respectivamente. Los sistemas de construcción como Make, CMake o Bazel gestionan la compilación de estas TUs y su posterior enlace.

Para un arquitecto, comprender las Translation Units es crucial para optimizar los tiempos de compilación y gestionar las dependencias en proyectos grandes. Un uso excesivo de includes o includes anidados puede inflar el tamaño de las TUs, ralentizando la compilación incremental y aumentando el consumo de memoria del compilador. Estrategias como el uso de 'forward declarations', 'Pimpl idiom' (Pointer to implementation) o módulos (en C++20) buscan reducir las dependencias entre TUs, mejorando la modularidad y la velocidad de compilación. La gestión eficiente de las TUs impacta directamente en la productividad del equipo y en la capacidad de escalar la base de código.