Jump to content
Dexter's Lab

includes de .c

Recommended Posts

Dexter's Lab

Boas pessoal

Não consigo encontrar informação suficiente na net sobre esta questão:

será que devo colocar um programa em .c noutro "main.c"? Porque os .h são genéricos e queria utilizá-los de forma geral, mas os .c como sendo subdivisões do programa além-funções().

Como faço isso? Porque estou a tentar e, no entanto, não estou a conseguir.

Obrigado desde já

Share this post


Link to post
Share on other sites
Dexter's Lab

Acabei por descobrir sozinho. Retirei o main() do ficheiro adicionado.

Pergunto ainda, no entanto, se é boa prática segmentar o programa desta forma, em vez de ter códigos de +200 linhas com funções dispersas.

Share this post


Link to post
Share on other sites
pmg

Nao, nao é boa pratica segmentar o programa em varios ficheiros de extensao .c e fazer o #include deles.

O que é boa pratica é escrever funcoes relacionadas num ficheiro de extensao .c e o correspondente ficheiro de extensao .h.

Depois ao compilar um programa (um ficheiro com extensao .c e que define a funcao main()) pede-se ao compilador para juntar os ficheiros de extensao .c necessarios.

O que eu faco numa primeira abordagem é imaginar em que grandes areas se divide o problema.

Depois faco um ficheiro de extensao .c e outro de extensao .h para cada area.

Por exemplo, para resolver o problema "Qual é o menor numero primo maior que um numero introduzido pelo utilizador?" eu vejo logo 2 areas: INPUT, NUMEROS PRIMOS.

Entao teria os ficheiros input.c e input.h (para tratar do INPUT), primo.c e primo.h (para tratar do NUMEROS PRIMOS), e o ficheiro problema.c que usa as funcionalidades fornecidas pelos outros.

No fim, para compilar tudo usaria qualquer coisa como

gcc problema.c input.c primo.c -o problema.exe

  • Vote 1

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
Dexter's Lab

Muito obrigado pela ajuda.

Mas por interesse, porque é que é má prática fazê-lo?

Share this post


Link to post
Share on other sites
HappyHippyHippo

porque se compilares os ficheiros separadamente e juntares tudo no linker, este irá se queixar e não concluir o processo de criação do executável.

a razão disso é porque ficam a existir várias instâncias das funções em vários ficheiros objectos, e o linker não sabe qual deles usar em cada ocasião.


IRC : sim, é algo que ainda existe >> #p@p

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

×
×
  • Create New...

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.