Bibliotecas x Compilador Dúvida de Iniciante [RESOLVIDO]

1. Bibliotecas x Compilador Dúvida de Iniciante [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 27/06/2020 - 11:03h

Minha dúvida dessa vez é baseada em um Post que o Paulo disse que eu não deveria remover as bibliotecas:
https://www.vivaolinux.com.br/topico/C-C++/C-Colocar-uma-String-dentro-de-strftime-E-possivel-1/

Sou iniciante em C/C++ e ainda estou entendendo o funcionamento básico de como tudo funciona!

Quando desenvolvo um programa, me preocupo que ele seja o menor possível, use menos recursos possíveis e seja o mais rápido possível. Gosto das coisas direitinhas. Logo acabo tendo manias de decidir se devo ou não declarar alguma coisa. Motivo de inúmeras perguntas baseadas no que me incomoda, onde acho que deveriam ser diferentes, e por não entender, pergunto para aprender e passar a aceitar o que inicialmente não gostei!

Acredito que sei identificar a que biblioteca pertence uma função ou comando! Até porque estudo os comandos que uso!
E ainda bem indicado pelo Paulo os sites que aprendi a usar como referência:
http://www.cplusplus.com/ (Gostando mais desse disparadamente)
https://en.cppreference.com/w/

Queria entender porque o Compilador ignora uma biblioteca se ela é necessária?
Se ao ignorar ele está por conta própria decidindo o que ele vai colocar como necessário!
Gostaria de saber se existe alguma forma ou comando para compilar que faça com que o compilador NÃO ignore a declaração da biblioteca necessária!
Uso gcc/g++, Gostei dele! Mas se existe um compilador melhor, gostaria de saber!

Decidi aprender C porque fiquei insatisfeito de estarem fazendo as coisas para mim. Eu programava em Delphi, usando a Brilhante plataforma da Embarcadero, nada tenho a falar mal dela, mas ao descobrir que para cada linha que eu digitava ela fazia todo o trabalho digitando outras milhões de linhas sem eu saber, fiquei muito puto!

Em C descobri o que é programar, ele não tem nada, e pra ter somos nós que devemos fazer! E como ele é pequeno fica super fácil entender como funciona! Por isso AMEI! Sou eu quem faz, e eu adoro mesmo isso!

Não tenho problema em usar ferramentas prontas, mas Delphi me confundiu, eu não sabia que a Embarcadero programava no meu lugar! HOJE quero saber quem está fazendo algo! Não gosto de ficar perdido!



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/06/2020 - 05:44h

Nick-us escreveu:

Minha dúvida dessa vez é baseada em um Post que o Paulo disse que eu não deveria remover as bibliotecas:
https://www.vivaolinux.com.br/topico/C-C++/C-Colocar-uma-String-dentro-de-strftime-E-possivel-1/

Sou iniciante em C/C++ e ainda estou entendendo o funcionamento básico de como tudo funciona!

Quando desenvolvo um programa, me preocupo que ele seja o menor possível, use menos recursos possíveis e seja o mais rápido possível. Gosto das coisas direitinhas. Logo acabo tendo manias de decidir se devo ou não declarar alguma coisa. Motivo de inúmeras perguntas baseadas no que me incomoda, onde acho que deveriam ser diferentes, e por não entender, pergunto para aprender e passar a aceitar o que inicialmente não gostei!

Acredito que sei identificar a que biblioteca pertence uma função ou comando! Até porque estudo os comandos que uso!
E ainda bem indicado pelo Paulo os sites que aprendi a usar como referência:
http://www.cplusplus.com/ (Gostando mais desse disparadamente)
https://en.cppreference.com/w/

Queria entender porque o Compilador ignora uma biblioteca se ela é necessária?


Como você chegou à conclusão de que o compilador ignora bibliotecas?

Se ao ignorar ele está por conta própria decidindo o que ele vai colocar como necessário!


Não entendi o que você quis dizer.

Por caso se refere ao fato de seu programa originalmente não ter listado explicitamente os cabeçalhos que declaram algumas das funções, e mesmo assim o programa ter compilado?

Se for isso, então a explicação mais provável é que algum dos cabeçalhos que você incluiu fez recursivamente a inclusão de um ou mais dos cabeçalhos que você omitiu.

No entanto, isso não significa que você pode omitir os cabeçalhos originais das funções que você usa. A não ser que esteja explicitamente documentado que o cabeçalho <a.h> incluiu o cabeçalho <b.h>, você não deve assumir que uma eventual inclusão implícita que ocorra na sua máquina vai ocorrer em outras máquinas, que usem um compilador diferente, e nem mesmo numa eventual atualização do seu próprio compilador.

Gostaria de saber se existe alguma forma ou comando para compilar que faça com que o compilador NÃO ignore a declaração da biblioteca necessária!
Uso gcc/g++, Gostei dele! Mas se existe um compilador melhor, gostaria de saber!


Acho que essa não é a questão. Como dito acima, o mais provável é que os cabeçalhos ensteja recursivamente referenciados dentro de um ou mais dos cabeçalhos que você usou, de um modo que você acaba herdando também os símbolos contidos nesse cabeçalho que foi implicitamente incluído.

Decidi aprender C porque fiquei insatisfeito de estarem fazendo as coisas para mim. Eu programava em Delphi, usando a Brilhante plataforma da Embarcadero, nada tenho a falar mal dela, mas ao descobrir que para cada linha que eu digitava ela fazia todo o trabalho digitando outras milhões de linhas sem eu saber, fiquei muito puto!


Bem, se for isso, então você teria de programar direto em linguagem de máquina. Todo compilador eventualmente transforma construções aparentemente simples em relativamente longas tripas de código executável.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

3. Re: Bibliotecas x Compilador Dúvida de Iniciante [RESOLVIDO]

Nick Us
Nick-us

(usa Slackware)

Enviado em 30/06/2020 - 11:21h

paulo1205 escreveu:
Como você chegou à conclusão de que o compilador ignora bibliotecas?
Por caso se refere ao fato de seu programa originalmente não ter listado explicitamente os cabeçalhos que declaram algumas das funções, e mesmo assim o programa ter compilado?
Se for isso, então a explicação mais provável é que algum dos cabeçalhos que você incluiu fez recursivamente a inclusão de um ou mais dos cabeçalhos que você omitiu.
No entanto, isso não significa que você pode omitir os cabeçalhos originais das funções que você usa. A não ser que esteja explicitamente documentado que o cabeçalho <a.h> incluiu o cabeçalho <b.h>, você não deve assumir que uma eventual inclusão implícita que ocorra na sua máquina vai ocorrer em outras máquinas, que usem um compilador diferente, e nem mesmo numa eventual atualização do seu próprio compilador.

Entendi o que vc disse sobre recursivamente, creio que isso seja o mais provável! Eu não havia pensado nisso!

Bem, se for isso, então você teria de programar direto em linguagem de máquina. Todo compilador eventualmente transforma construções aparentemente simples em relativamente longas tripas de código executável.

Pois é, eu sou bem curioso, é que eu ainda não tenho o conhecimento suficiente, mas está agendando para eu estudar exatamente como um compilador funciona, assim que eu avançar mais em C, vou estudar assembly, tentar criar alguma coisa pequena. De verdade quero saber exatamente como tudo começa e como chegou a um compilador. Eu já li que existe antes ainda um interpretador ou algo assim, Meu objetivo é entender como tudo começou, e como tudo começou a funcionar! Entender fazendo! Como disse em um post antigo, se eu pudesse e se tivesse algum daqueles PCs que usavam cartão de perfurar eu teria!
Tudo por pura curiosidade mesmo!








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts