Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipecesar

Cabeçalhos e Biblioteca

Recommended Posts

Primeiramente, Boa Noite,

 

Eu não estou entendendo bem a diferença entre cabeçalho e biblioteca. Por exemplo. A função sqrt da biblioteca matemática pode ser chamada com um argumento inteiro, muito embora o protótipo da função em math.h especifique um argumento double. A instrução calcula corretamente sqrt(4) e imprime o valor 2.000. O protótipo da função faz com que o compilador converta o valor inteiro 4 para o valor double 4.0 antes de o mesmo ser passado para sqrt.

 

Posso dizer que math.h é o cabeçalho e o "objetivo" do cabeçalho é definir protótipos de função, estrutura de dados? E esse cabeçalho tem uma biblioteca .c? A biblioteca de math é .c? tipo, existe math.c? com todas as funções que math precisa? Junto o cabeçalho e a biblioteca forma um módulo é isso? Me corrija se eu estiver errado por favor.

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eu não estou entendendo bem a diferença entre cabeçalho e biblioteca. Por exemplo. A função sqrt da biblioteca matemática pode ser chamada com um argumento inteiro, muito embora o protótipo da função em math.h especifique um argumento double. A instrução calcula corretamente sqrt(4) e imprime o valor 2.000. O protótipo da função faz com que o compilador converta o valor inteiro 4 para o valor double 4.0 antes de o mesmo ser passado para sqrt.

 

Posso dizer que math.h é o cabeçalho e o "objetivo" do cabeçalho é definir protótipos de função, estrutura de dados? E esse cabeçalho tem uma biblioteca .c? A biblioteca de math é .c? tipo, existe math.c? com todas as funções que math precisa? Junto o cabeçalho e a biblioteca forma um módulo é isso? Me corrija se eu estiver errado por favor.

 

 

Obrigado

 

A função sqrt() funciona com valores inteiros por causa da promoção (se você fizer casting vai ser a mesma coisa) automática para double. Cabeçalho, sim, seria para definir protótipos de função, estrutura de dados, para dar uma ideia ao usuário da biblioteca sobre como usá-la, mas sem precisar defini-la. Assim, caso a implementação das funções do cabeçalho mudasse, a interface por trás seria a mesma, e você não precisaria recompilar a aplicação, só relinkar. Os cabeçalhos normalmente tem um arquivo source relacionado, embora não todas as vezes.

 

Uma biblioteca é um conjunto de arquivos de source compilados e juntados (sim, compactados) num arquivo só, com o formato .lib para o Visual Studio e .a para o GCC (exemplos).

 

No seu computador, não existe math.c, pois a distribuição envia uma versão compilada da mesma. Se você usar o GCC (mingw serve), você vai vir é com um arquivo chamado libm.a ou então libmath.a, que guarda todos os arquivos source compilados e compactados em um arquivo só, prontos para serem linkados pelo seu programa.

 

 

Entendido?

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.