• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Triton

Projecto com vários ficheiros

7 mensagens neste tópico

Estou a fazer um projecto em C que involve vários ficheiros, a minha dúvida consiste em saber qual é a melhor forma para organizar o projecto.

Neste momento consegui que o projecto compile com a ajuda de um Makefile, mas os #includes no código fonte foi meio à sorte, mas por enquanto está a funcionar. Depois também estive a analizar outros projectos e reparei que alguns usam #ifndef nos headers. Também agradecia que alguém me explicasse o que deve ser colocado nos ficheiros header e nos outros.

Quero que o projecto fique organizado desde o ínicio, senão depois já sei que me vou ver à rasca para modificar tudo. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Outra opção, e essa vê-se muito, é criar vários ".h" e fazer o include desses ficheiros no ficheiro principal ".c"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Outra opção, e essa vê-se muito, é criar vários ".h" e fazer o include desses ficheiros no ficheiro principal ".c"

É essa a técnica que estou a utilizar agora, mas foi tudo meio à sorte, por isso é que agradecia se alguém me explicasse ou me arranja-se uns links sobre o assunto. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Neste momento consegui que o projecto compile com a ajuda de um Makefile, mas os #includes no código fonte foi meio à sorte, mas por enquanto está a funcionar. Depois também estive a analizar outros projectos e reparei que alguns usam #ifndef nos headers. Também agradecia que alguém me explicasse o que deve ser colocado nos ficheiros header e nos outros.

A directiva de pre-processamento #ifndef serve somente para correr algo caso alguma coisa não esteja definida. Serve por exemplo para quando tens muitos includes ao longo do teu programa e só queres que ele faça algo se já tiver definido outra coisa qualquer. Eu por exemplo uso para o modo de debug quando estou a desenvolver,

#if defined(DEBUG)
  ...
#endif

http://en.wikipedia.org/wiki/C_preprocessor

http://gcc.gnu.org/onlinedocs/gcc-3.4.6/cpp/index.html#Top

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mmm... não sei bem o que há a explicar.

Incluis os header files e despejas para lá os cabeçalhos, por motivos de organização o código das funções deve ficar num ficheiro com o mesmo nome .c

Isto é o que se costuma fazerm não quer dizer que tenhas que seguir esta organização.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a organização que eu normalmente uso, é inspirada na organização usada em POO (mesmo não sendo o C um linguagem OO). ou seja, sempre que quero criar um tipo de dados, p.e. uma lista, crio dois ficheiros, lista.h e lista.c.

no .h ficam as definições de tipos e as assinaturas das função. no .c ficam as funções que lidam com esse tipo de dados (funções de inserção, remoção, procura, etc.).

sempre que noutro ficheiro preciso de usar esta lista ou uma função que trabalha sobre ela, então faço include do ficheiro .h

#ifndef <NOME_MODULO>
#define <NOME_MODULO>

...

#endif

o código dos ficheiros .h deve ficar dentro destas macros. isto evita que faças o include de um mesmo ficheiro várias vezes (o que pode levar a erros de compilação).

normalmente no nome do módulo coloca-se algo como _LISTA_, _LISTA_H, _LISTA_H_, etc.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado Rui Carlos, é mesmo esse método que estou a usar agora e até ver ainda não deu problemas. :cheesygrin:

Obrigado a todos pelas respostas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora