Partilhar via


Fases de tradução

Programas c e C++ consistem em um ou mais arquivos de origem, cada qual contendo parte do texto do programa.Um arquivo de origem, juntamente com seus arquivos de inclusão (arquivos que estão incluídos usando o #include diretiva de pré-processamento), mas não incluindo as seções do código removido por diretivas de compilação condicional, tais como #if, é chamado de "unidade de conversão".

Arquivos de origem podem ser traduzidos em momentos diferentes — na verdade, é comum para converter somente arquivos desatualizados.As unidades de conversão traduzido podem ser processadas em arquivos de objeto separado ou bibliotecas de código de objeto.Essas unidades de conversão separado, traduzido, em seguida, são vinculadas para formar um programa executável ou uma biblioteca de vínculo dinâmico (DLL).Para obter mais informações sobre arquivos que podem ser usados como entrada para o vinculador, consulte Arquivos de LINK de entrada.

Unidades de conversão podem se comunicar usando:

  • Chamadas de funções que têm ligação externa.

  • Chamadas a funções de membro de classe que tenha ligação externa.

  • Modificação direta dos objetos que têm ligação externa.

  • Modificação direta dos arquivos.

  • Comunicação entre processos (para Microsoft Windows-based applications somente).

A lista a seguir descreve as fases nas quais o compilador converte arquivos:

  • Mapeamento de caracteres
    Caracteres no arquivo de origem são mapeados para a representação de origem interna.São convertidos em seqüências de trigraph representação interna de caractere único nesta fase.

  • Linha splicing
    Todas as linhas que terminam em uma barra invertida (\) e seguido imediatamente por uma nova linha caractere associados com a próxima linha no arquivo de origem, formando linhas lógicas das linhas da físicas.A menos que ele estiver vazio, um arquivo de origem deve terminar com um caractere de nova linha não é precedido por uma barra invertida.

  • Uso de token
    O arquivo de origem é dividido em símbolos de pré-processamento e caracteres de espaço em branco.Comentários no arquivo de origem são substituídos pelo caractere de um espaço cada.Caracteres de nova linha são mantidas.

  • O pré-processamento
    Diretivas de pré-processamento são executadas e as macros são expandidas no arquivo de origem.O #include instrução chama tradução começando com as etapas anteriores de três tradução em qualquer texto incluído.

  • Mapeamento de conjunto de caracteres
    Membros do conjunto de todos os caracteres de origem e seqüências de escape são convertidas para seus equivalentes no conjunto de caracteres de execução.Para Microsoft C e C++, de origem e os conjuntos de caracteres de execução são ASCII.

  • Concatenação de seqüência de caracteres
    Todas as seqüência de caracteres adjacente e toda a seqüência de caracteres literais são concatenadas.Por exemplo, "String " "concatenation" torna-se "String concatenation".

  • Tradução
    Todos os tokens são analisados sintática e semanticamente; Esses tokens são convertidos em código objeto.

  • Ligação
    Todas as referências externas são resolvidas criar um programa executável ou uma biblioteca de vínculo dinâmico.

O compilador emite avisos ou erros durante as fases de tradução em que ele encontra erros de sintaxe.

O vinculador resolve todas as referências externas e cria um programa executável ou DLL, combinando uma ou mais processados, separadamente, unidades de conversão, juntamente com as bibliotecas padrão.

Consulte também

Referência

Pré-processador