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

bertolo

projecto com vários ficheiros dúvida

2 mensagens neste tópico

Boas !

Quando crio um projecto com vários ficheiros como faço para evitar reedefenir variaveis e repetir inclusão de bibliotecas ?

Quero criar projecto com .h à parte com cabeçalhos, ficheiro com funcoes e main.

3 ficheiros:

main.c

main.h

funcoes.c

estive a ler qq coisa sobre macros mas nao percebi bem aquilo.

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sugestão: o nome do ficheiro onde está a função main() deve reflectir o projecto em questão. Por exemplo, para um calendário chama-o "calendario.c"; para um driver de um rato, chama-o "driver-rato-xpto.c", .... Em princípio o ficheiro com a função main() não define outras funções, tipos, ou variáveis globais, por isso nunca vai haver o ficheiro h respectivo ("driver-rato-xpto.h").

Para os ficheiros .c que definem funções, tipo, ou variáveis globais (esqueci-me de alguma coisa?) crias um ficheiro .h correspondente. Esse ficheiro .h é incluído no respectivo ficheiro .c (principalmente para validação) e em todos os outros ficheiros .c que precisem de coisas declaradas nesse ficheiro .h.

Para evitar múltiplas inclusões de um ficheiro .h, podes usar a técnica de "header guards". Por exemplo, o ficheiro "numeros_primos.h" podia ter o seguinte

#ifndef NUMEROS_PRIMOS_H_INCLUDED
#define NUMEROS_PRIMOS_H_INCLUDED

extern int last_prime; /* declaração */
int check_prime(int);
int next_prime(int);

#endif

PS. A definição de variáveis deve ser uma única vez num único ficheiro .c.

Se precisas de usar a mesma variável em diferentes ficheiros, declaras essa variável no ficheiro .h, com extern, como last_prime no código acima.

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