Ir para conteúdo
Faça parte da equipe! (2024) ×

Exemplo de um programa com compilação separada


_Guguinha_
 Compartilhar

Posts Recomendados

Quando estamos desenvolvendo programas que exigem muitas lihas de código, isso gera uma grande confusão, pois nos obriga em caso de bugs a percorrer algumas linhas, ou então quando vamos modificar uma função, classe ou struct, sempre temos que percorrer aquele código infernal! Para acabar com este tipo de problema típico de programadores como eu, sempre devemos fazer com compilação separada, ou seja, fragmentar o programa em arquivos .h (headers), .cpp, ou raramente .o (Object), isso é útil também em termos de organização, cada um poderá fazer a manutenção do código sem problema nenhum, eu tinha postado um programa interativo aqui, acho que todos sabem de qual eu estou me referindo, o source dele é extremamente gigantesco, e com isso, gera uma lerdeza na compilação e tmb não sabemos onde está nada com nada, ele funciona perfeitamente mas em termos de organização, está um lixo completo hehehehe, mas legal acima de tudo! As chances de um programador experiente e profissional fazer um programa grande sem fragmentá-lo é remota, se isto ocorrer, talvez ele esteja provando que ñ tem capacidade para organizar seu trabalho, e isto poderá desencadear muitos problemas para ele, principalmente financeiros se ele trabalhar em algum lugar respeitado. Bem, através deste tópico mostrarei um exemplo de um programa com compilação separada, AH! vou citar as duas principais razões de ser recomendada a fragmentação do código grande:

 

1ª Porque demora para compilar um arquivo e parece tolice esperar que o compilador fique traduzindo código que ñ se alterou. Se o seu código estiver distribuído em vários arquivos-fontes, então somente aqueles arquivos que vc alterou necessitam ser recompilados.

 

2ª A segundo razão se torna aparente quando vc trabalha com outros programadores em uma equipe. Seria bastante difícil para vários programadores editar simultaneamente um único arquivo-fonte. Portanto, o código do programa é particionado de modo que cada programador somente é responsável por um conjunto separado de arquivos.

 

Deve existir um caminho de comunicação entre os arquivos. Em C++, esta comunicação ocorre através da inclusão de arquivos de cabeçalho (.h). Um arquivo de cabeçalho contém:

 

 

  • definição de constantes
  • definição de classes
  • declarações de funções não-membro
  • declaração de protótipos
  • declaração de variáveis globais

 

O arquivo-fonte contém:

 

  • definição de funções-membro
  • definições de funções não-membro
  • declaração de protótipos
  • definições de variáveis globais

 

Permita-me considerar inicialmente um caso simples. Vou criar um conjunto de dois arquivos, b.cpp, c.h, que contém a interface e a implementação da classe Max e da struct Aplicativo.

O arquivo de cabeçalho contém a definição da classe e da struct. Ele também inclui todos os cabeçalhos que são necessários para definir a classe e a struct. Por exemplo, a classe Max é definida em termos da classe standard vector. Portanto, vc deve incluir o cabeçalho <vector> também, Cada vez que vc inclui um cabeçalho proveniente de biblioteca padrão, vc também deve incluir o comando using namespace std; .

 

Arquivo c.h

 

É necessário se cadastrar para acessar o conteúdo.

 

Observe este estranho conjunto de diretivas de pré-processamento que envolve o arquivo:

 

É necessário se cadastrar para acessar o conteúdo.

 

Essas diretivas são uma proteção contra inclusões múltiplas. Suponha que um arquivo inclua c.h e outro arquivo de cabeçalho, que por sua vez inclui c.h. Então o compilador vê a definição de classe duas vezes e ele reclama a respeito de duas classes com o mesmo nome (lamentavelmente, ele ñ verifica se as definições são idênticas).

 

O arquivo-fonte simplismente contém as definições das funções-membro.

 

Arquivo b.cpp

 

É necessário se cadastrar para acessar o conteúdo.

 

O arquivo b.cpp não contém uma função main.

 

Aqui está um programa de teste simples que coloca em uso a classe Max e a struct Aplicativo. Seu arquiv-fonte inclui o arquiivo de cabeçalho c.h

 

Arquivo a.cpp

 

É necessário se cadastrar para acessar o conteúdo.

 

Para construir o programa completo. você precisa compilar ambos os arquivos fontes a.cpp e b.cpp. Os detalhes dependem do seu compilador. Por exemplo, com o compilador Gnu, vc usa os comandos

 

g++ -c a.cpp

g++ -c b.cpp

g++ -o a b.o a.o[/b]

 

 

ufa, que tutorial e tento não? hehe, fui, depois dessa vou descansar! ^^

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.