¿Qué es una "unidad de traducción" en C++?

Resuelto Harry asked hace 15 años • 11 respuestas

Estoy leyendo en ese momento "Effective C++" escrito por Scott Meyers y encontré el término "unidad de traducción".

¿Alguien podría darme una explicación de lo siguiente?

  1. ¿Qué es exactamente?

  2. ¿Cuándo debería considerar usarlo mientras programo con C++?

  3. ¿Es solo C++ o se puede utilizar con otros lenguajes de programación?

Quizás ya lo use sin conocer el término...

Harry avatar Jul 10 '09 03:07 Harry
Aceptado

Desde aquí : ( enlace de la máquina wayback )

Según el estándar C++ ( enlace de wayback machine ): una unidad de traducción es la unidad básica de compilación en C++. Consiste en el contenido de un único archivo fuente, más el contenido de cualquier archivo de encabezado incluido directa o indirectamente en él, menos aquellas líneas que se ignoraron mediante declaraciones de preprocesamiento condicional.

Una única unidad de traducción se puede compilar en un archivo objeto, biblioteca o programa ejecutable.

La noción de unidad de traducción se menciona con mayor frecuencia en los contextos de la Regla de una definición y las plantillas.

JeffH avatar Jul 09 '2009 20:07 JeffH

Una unidad de traducción es, a todos los efectos, un archivo (.c/.cpp), una vez finalizado, incluye todos los archivos de encabezado.

http://web.archive.org/web/20091213073754/http://msdn.microsoft.com/en-us/library/bxss3ska(VS.80).aspx

Ana Betts avatar Jul 09 '2009 20:07 Ana Betts

Una pregunta difícil de responder definitivamente. El estándar C++ establece:

El texto del programa se guarda en unidades denominadas archivos fuente en esta Norma Internacional. Un archivo fuente junto con todos los encabezados (17.4.1.2) y archivos fuente incluidos (16.2) mediante la directiva de preprocesamiento #include, menos las líneas fuente omitidas por cualquiera de las directivas de preprocesamiento de inclusión condicional (16.1), se denomina unidad de traducción. [Nota: no es necesario traducir todos los programas en C++ al mismo tiempo. ]

Entonces, para la mayoría de los efectos, una unidad de traducción es un único archivo fuente de C++ y el encabezado u otros archivos que incluye a través del mecanismo #include del preprocesador.

Respecto a tus otras preguntas:

  1. ¿Cuándo debería considerar usarlo al programar con C++?

No puedes no usarlo: las unidades de traducción son la base de un programa C++.

  1. Si está relacionado sólo con C++, o puede usarse con otros lenguajes de programación

Otros lenguajes tienen conceptos similares, pero su semántica será sutilmente diferente. La mayoría de los demás lenguajes no utilizan un preprocesador, por ejemplo.

 avatar Jul 09 '2009 20:07

El libro lo deja bastante claro. Cuando Meyers se refiere a una "Unidad de traducción", se refiere a un archivo de código fuente.

Ed Swangren avatar Jul 09 '2009 20:07 Ed Swangren

Una unidad de traducción es un código que se pasa al compilador propiamente dicho. Por lo general, esto significa el resultado de ejecutar el preprocesador en el archivo .c.

sigjuice avatar Jul 09 '2009 20:07 sigjuice