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

Sign in to follow this  
bertolo

projecto com vários ficheiros dúvida

Recommended Posts

bertolo

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

Share this post


Link to post
Share on other sites
pmg

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.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.