Programar em C++/Compilação: diferenças entre revisões

[edição verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Abacaxi (discussão | contribs)
Sem resumo de edição
Linha 2:
 
Compilação é o processo de "tradução" do programa escrito em uma linguagem de programação para um formato no qual o computador entenda. A compilação gera um ficheiro - arquivo em português brasileiro - binário (executável) a partir do código fonte.
 
 
== A tradução do código para o computador ==
 
Em C e C++ são 3 os programas usados para fazer a tradução do código fonte (que são as linhas de código que o programador escreve) num ficheiro executável, que o computador pode executar:
# Preprocessor - pré-processador
# Compiler - compilador
# Linker
 
== Pré-processador ==
 
Este é um programa que busca no código fonte – no código que escrevemos – por directivasdiretivas que foram dirigidas a ele, ou seja linhas iniciadas com “#”, assim o pré-processador sabe que aquela instrução é dirigida para ele.
No exemplo tínhamos :
#include <iostream>
 
Então o pré-processador inclui ficheiros localizados no ficheiro ''iostream''. Então tínhamos o código fonte que depois é transformado num outro código fonte de acordo com as diretivas pré-processadas.
Linha 27 ⟶ 26:
== Compilador ==
 
Compilador é um programa que pega código fonte preprocessado e o traduz em instruções de linguagem de máquina, linguagem que o computador entende. Estas são guardadas num ficheiroarquivo áa parte, chamado de "object file" e tem a extensão .o ou .obj dependendo do compilador. Existem diferentes compiladores para diferentes linguagens de programação. Essa tradução é feita se o código estiver na linguagem que o compilador compilar. Existem regras de escrita e de gramática. No caso de existir um erro de sintaxe, então dará um erro de compilação.
 
Compilador é um programa que pega código fonte preprocessado e o traduz em instruções de linguagem de máquina, linguagem que o computador entende. Estas são guardadas num ficheiro á parte, chamado de object file e tem a extensão .o ou .obj dependendo do compilador.
Existem diferentes compiladores para diferentes linguagens de programação.
Essa tradução é feita se o código estiver na linguagem própria á linguagem. Existem regras de escrita e de gramática. No caso de existir um erro de sintaxe, então dará um erro de compilação.
 
== Linker ==
 
Apesar do nosso "object file" ter as instruções em linguagem máquina, o computador ainda não poder correr como um programa. A razão é que é necessário outro código da biblioteca, que é o código do run-time library, que é para as operações comuns tipo a tradução o input do teclado ou a capacidade para interagir com hardware externo tipo o monitor para apresentar uma mensagem. Estas bibliotecas run-time costumam já estar instaladas com o sistema operativo, caso isso não aconteça teremos de fazer o dowloaddownload delas.
 
Então o resultado da combinação do "object file" com as partes necessárias da biblioteca run-time fazem finalmente a criação de um ficheiro executável com a extensão .exe
Apesar do nosso object file ter as instruções em linguagem máquina, o computador ainda não poder correr como um programa. A razão é que é necessário outro código da biblioteca, que é o código do run-time library, que é para as operações comuns tipo a tradução o input do teclado ou a capacidade para interagir com hardware externo tipo o monitor para apresentar uma mensagem. Estas bibliotecas run-time costumam já estar instaladas com o sistema operativo, caso isso não aconteça teremos de fazer o dowload delas.
Então o resultado da combinação do object file com as partes necessárias da biblioteca run-time fazem finalmente a criação de um ficheiro executável com a extensão .exe
 
== Processo de compilação ==
 
Em primeiro lugar, vamos escrever um código que está na linguagem C++ e vamos gravar esse código todo num ficheiro, que é uma quantidade de memória no computador. Esse ficheiro fica com a terminação “.CPP” ou .CP ou C.. Chama-se a este conjunto de linhas que escrevemos de, código fonte ou source code (pode ter a terminação “.c”, “.cpp”, e “.cc” - estas extensões dependem do compilador que se utiliza). Esse souce"source code" é de alguma forma críptica e para alguém que não saiba de c++ no entanto é aquilo que neste momento chamamos de humam readable form.
 
Em primeiro lugar, vamos escrever um código que está na linguagem C++ e vamos gravar esse código todo num ficheiro, que é uma quantidade de memória no computador. Esse ficheiro fica com a terminação “.CPP” ou .CP ou C.. Chama-se a este conjunto de linhas que escrevemos de, código fonte ou source code (pode ter a terminação “.c”, “.cpp”, e “.cc” - estas extensões dependem do compilador que se utiliza). Esse souce code é de alguma forma críptica e para alguém que não saiba de c++ no entanto é aquilo que neste momento chamamos de humam readable form.
 
Para tornar o nosso source code num programa usamos um compiler que irá produzir um object file. Este ficheiro tem normalmente a extensão. OBJ
porém ainda não temos um programa executável. Para isso vamos utilizar o linker.
Uma das vantagens do c++ é que usufrui de uma estrutura multi-file. A linguagem permite compilação separada, onde partes do programa total podem estar numa ou mais source files e estes podem ser compilados independentemente de cada um. A ideia é que o processo de compilação produz files que depois podem ser linked together usando um editor de link ou loadesloads que o sistema provem.
 
Os programas feitos em c++ são tipicamente ficheiros .OBJ ligados uns aos outros com uma ou mais libraries. Estas são uma colecçãocoleção de linkable files que nós criámos ou que foram fornecidas (vêm com o compilador ou compramos).
 
Depois de se fazer este linking é que obtemos umso ficheirosarquivo comexecutável. aNo Windows, ele tem terminação “.exe”. Só assim é queAssim, o sistema operativooperacional reconhece o programa como independente.
 
Os compiladores actuaisatuais incluem também pré-compiladores, (ou pré-processadores) (antes eram software independente, extra), estes precompiladores vão fazer alterações ao código fonte, que basicamente consistem em eliminar pedaços de código que escrevemos, e/ou substituir pedaços de código que escrevemos por outro (copy-paste), enfim, é alterar o código fonte por outro código fonte. Depois é que se compila.
 
 
---
{{AutoCat}}