Programar em C++/Compilação: diferenças entre revisões
[edição não verificada] | [edição não verificada] |
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++: |
[[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++: |
[[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:
- Preprocessor
- Compiler
- 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
- 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.