Compartir a través de


Fases de traducción

Los programas de c y C++ constan de uno o más archivos de código fuente, que contiene una parte del texto de programa.Un archivo de código fuente, así como los archivos de inclusión (archivos que se incluyan mediante la directiva de preprocesador de #include ) pero no incluidas secciones de código quitadas por directivas de compilación condicional como #if, se denomina “unidad de traducción”.

Los archivos de código fuente se pueden traducir en momentos diferentes (de hecho, es común traducir sólo los archivos actualizados.Las unidades de traducción traducidas se pueden procesar en los archivos objeto o bibliotecas independientes del código objeto.Estas unidades de traducción independientes, traducidas se vinculan para formar un programa ejecutable o una biblioteca de vínculos (DLL) dinámicos.Para obtener más información sobre los archivos que se pueden utilizar como entrada del vinculador, vea Archivos de entrada de LINK.

Las unidades de traducción pueden comunicarse mediante:

  • Llamadas a funciones que tienen vinculación externa.

  • Llamadas a las funciones miembro de clase que tienen vinculación externa.

  • Ejecute la modificación de los objetos que poseen vinculación externa.

  • Modificar directamente los archivos.

  • Comunicación entre procesos (para las aplicaciones basadas en Microsoft Windows solo).

La lista siguiente describe las fases en las que el compilador traduce los archivos:

  • Asignación de caracteres
    Los caracteres en el archivo de código fuente se asignan a la representación interna de origen.Las secuencias de Trígrafo se convierten a la representación interna del carácter en esta fase.

  • El insertar de línea
    Todas las líneas que terminen en una barra diagonal inversa (\) y inmediatamente seguido de un carácter de nueva línea se combinan con la línea siguiente en el archivo de código fuente que forma líneas lógicas de líneas físicas.A menos que esté vacío, un archivo de código fuente debe finalizar en un carácter de nueva línea que no está precedido por una barra diagonal inversa.

  • Tokenización
    El archivo de código fuente se divide en tokens de preprocesamiento y caracteres de espacio en blanco.Los comentarios del archivo de código fuente se reemplazan con un carácter de espacio cada uno.se conservan los caracteres de nueva línea.

  • Preprocesamiento
    Se ejecutan las directivas de preprocesamiento y las macros se expanden al archivo de código fuente.La instrucción de #include invoca la traslación que comienza con los tres pasos anteriores de traducción en cualquier texto incluido.

  • asignación de conjunto de caracteres
    Todos los miembros y secuencias de escape de juego de caracteres de origen se convierten en sus equivalentes en el juego de caracteres de la ejecución.Para Microsoft c y C++, el origen y los juegos de caracteres de ejecución son ASCII.

  • Concatenación de cadenas
    Se concatenan todos los literales adyacentes de la cadena y la ancho-cadena.Por ejemplo, "String " "concatenation" se convierte en "String concatenation".

  • Conversión
    Analizan todos los tokens sintácticamente y semánticamente; estos tokens se convierten en código de objeto.

  • Vinculación
    Todas las referencias externas se resuelven para crear un programa ejecutable o una biblioteca de vínculos dinámicos.

Las advertencias o errores del compilador emite durante las fases de traducción en las que encuentra errores de sintaxis.

El vinculador resuelve todas las referencias externas y crea un programa ejecutable o DLL combinando una o más unidades de traducción por separado procesadas junto con bibliotecas estándar.

Vea también

Referencia

Preprocesador