ejemplos descargar definicion compiler caracteristicas c++

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



c++ manual (11)

Además de la ODR, la unidad de traducción es importante en la definición de espacios de nombres sin nombre, que reemplaza uno de los antiguos usos de "estática".

Supongo que todavía no tengo suficientes puntos para agregar un comentario en la respuesta superior.

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

¿Podría alguien por favor darme una explicación de:

1) Que es exactamente

2) ¿Cuándo debería considerar usarlo al programar con C ++?

3) Si está relacionado solo con C ++, o puede usarse con otros lenguajes de programación

Puede que ya lo use sin saber el término ...


Cada archivo cpp / c (implementación) se convertirá en una unidad de traducción (es decir, encabezados de archivo de objeto (.obj)) en el archivo cpp será reemplazado por el texto real de los archivos de encabezado.


Como han dicho otros, una unidad de traducción es básicamente el contenido de un archivo de origen después del preprocesamiento. Es la producción más alta en la gramática del lenguaje; solo necesitarías preocuparte si estuvieras escribiendo un compilador de C o C ++.


Desde here : ( enlace de la máquina wayback )

Según el estándar C ++ ( enlace de la máquina de wayback ): Una unidad de traducción es la unidad básica de compilación en C ++. Consiste en el contenido de un único archivo de origen, más el contenido de cualquier archivo de encabezado incluido directamente o indirectamente por él, menos las líneas que se ignoraron al usar declaraciones de preproceso condicional.

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

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


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



Los programas C y C ++ constan de uno o más archivos de origen, cada uno de los cuales contiene parte del texto del programa. Un archivo de origen, junto con sus archivos de inclusión (archivos que se incluyen mediante la directiva de preprocesador #include) pero que no incluyen secciones de código eliminadas por directivas de compilación condicional como #if, se denomina "unidad de traducción".


Según MSDN : los programas C y C ++ constan de uno o más archivos de origen, cada uno de los cuales contiene parte del texto del programa. Un archivo de origen, junto con sus archivos de inclusión (archivos que se incluyen mediante la directiva de preprocesador #include) pero que no incluyen secciones de código eliminadas por directivas de compilación condicional como #if, se denomina "unidad de traducción".


Una pregunta difícil de contestar definitivamente. Los estados estándar de C ++:

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

Entonces, para la mayoría de los propósitos y propósitos, 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 de inclusión de preprocesador #.

Respecto a tus otras preguntas:

2) ¿Cuándo debería considerar usarlo al programar con C ++?

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

3) Si está relacionado solo con C ++, o puede usarse con otros lenguajes de programación

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



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.