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

Origem: Wikilivros, livros abertos por um mundo aberto.
[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Separando os títulos
Sem resumo de edição
Linha 24: Linha 24:
[[Programar em C++: Operator Overloading|Operator Overloading]] •
[[Programar em C++: Operator Overloading|Operator Overloading]] •
[[Programar em C++: Inherence|Inherence]] •
[[Programar em C++: Inherence|Inherence]] •
[[Programar em C++: Polymorphism|Polymorphism]] •
[[Programar em C++: Polimorfismo|Polimorfismo]] •
[[Programar em C++: Virtual Members|Virtual Members]] •
[[Programar em C++: Virtual Members|Virtual Members]] •
[[Programar em C++: Templates|Templates]] •
[[Programar em C++: Templates|Templates]] •
Linha 110: Linha 110:
[[Programar em C++: Operator Overloading|Operator Overloading]]
[[Programar em C++: Operator Overloading|Operator Overloading]]
[[Programar em C++: Inherence|Inherence]]
[[Programar em C++: Inherence|Inherence]]
[[Programar em C++: Polymorphism|Polymorphism]]
[[Programar em C++: Polimorfismo|Polimorfismo]]
[[Programar em C++: Virtual Members|Virtual Members]]
[[Programar em C++: Virtual Members|Virtual Members]]
[[Programar em C++: Templates|Templates]]
[[Programar em C++: Templates|Templates]]

Revisão das 20h52min de 5 de agosto de 2006



A tradução do código para o computador Existem 3 programas usados para fazer a tradução do source code (que é as linhas de código que o programador escreve) num ficheiro executável, num ficheiro que o computador pode correr:

  1. Preprocessor
  2. Compiler
  3. Linker


'Preprocessador'

Este é um programa que vai procurar no source code – no código que escrevemos – por directivas que foram dirigidas a ele, por isso é que usamos o “#” para o préprocessador saber que aquela instrução é para ele. No exemplo tínhamos

  1. include <iostream>

Então o préprocessador o que faz é incluir ficheiros localizados no ficheiro iostream Então tínhamos o source code que depois é transformado num outro source code préprocessado


'Compiler'

Compilador é outro programa que pega no source code preprocessado e o traduz em instruções de machine language. Que são guardadas num ficheiro á parte, chamado de object file e tem a extensão .obj. 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 sintax, então dará um erro de compilação. Neste sentido um compilador não é mais do que um spell checker e um grammar checker.


'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 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 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 loades 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çã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 ums ficheiros com a terminação “.exe”. Só assim é que o sistema operativo reconhece o programa como independente.

Os compiladores actuais 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.