Como ela foi feito ? Entrei no dir include entrei no arquivo stdio.h e encontrei apenas o protótipo da função :
int printf(const char *_format, ...);
Qual a explicação ? Onde ta o resto ?
Como ela foi feito ? Entrei no dir include entrei no arquivo stdio.h e encontrei apenas o protótipo da função :
int printf(const char *_format, ...);
Qual a explicação ? Onde ta o resto ?
provavelmente mais em baixo.
vc deve ter olhado apenas no cabeçalho do arquivo.
Amigo, o resto está em arquivos objeto, pré-compilados.
O que você faz ao inserir um #include no seu código, é dizer ao compilador o protótipo das funções, os tipos, e as variáveis que irá utilizar (sim, há muito mais, mas não vem ao caso agora), assim, o compilador saberá de que forma compilar o seu programa, reservando os devidos espaços na memória, aferindo referências a posições de memória, e adicionando algum código necessário, automaticamente. Quem cria o binário, neste caso um ELF, é o LINKER, e não o compilador. O Linker tem o trabalho de ler os arquivos objeto e criar o binário, levando em conta as dependências dos arquivos entre si, as bibliotecas necessárias, e assim por diante.
Tentei explicar de uma forma simples. Mas não sei se consegui ser suficientemente claro.
Você pode pesquisar mais sobre COMPILADOR e LINKER se desejar detalhes mais técnicos.
Qualquer dúvida posta novamente aí.
Bom estudo!
Ah, e sobre onde encontrar o código da função printf..
Voce encontrará no código-fonte da GLIBC (http://directory.fsf.org/glibc.html)
Seu compilador utiliza as funções da libc caso você utilize algum header da mesma. O que é padrão
Nesse caso, a função printf (http://www.die.net/doc/linux/man/man3/printf.3.html), é parte da libc, definida pelo header stdio.h.
Você pode utilizar o comando "man" para encontrar a documentação das funções da libc.
Por exemplo:
man 3 printf
Espero ter contribuído.
Desculpa perguntar, mas porque vc está tão interessado em printf?
Postado originalmente por shinzo
É que eu gostaria de saber ao fundo, quem sabe usar o C como um assembly.
Como assim usar o C como um Assembly?
O C é um compilador de nível intermediário, o Assembly é uma linguagem de baixo nível (próxima a linguagem de máquina do computador). Eu gosto muito dos dois, mas hoje em dia é melhor programar em C se vc pretende ter algo mais portável, o Assembly vai te prender a máquina em que vc criou o programa.
Seja mais específico em sua dúvida, diga exatamente o que vc quer para que possamos ajudá-lo.
Um abraço
Postado originalmente por shinzo
Eu achava interessante controlar o hardware, e lembro que meu amigo uma vez falou que o irmão dele foi em uma palestra falando de como usar o C em baixo nível. É algo interessante, mas nem achei material sobre. Obrigado pela ajuda.
Dá pra fazer isso de várias maneiras, vai depender de um monte de coisas:
1) Qual é o sistema operacional
2) Qual o tipo de hardware que vc deseja manipular
3) Qual compilador será usado
4) O que vc deseja fazer
etc.... Se vc for mais específico talvez eu possa ajudar já que tb me interesso por essa área.
Postado originalmente por shinzo
Eu queria aprender a controlar os meus periféricos pra depois entrar no ramo de mecatrônica. Não tinha nem idéia do que controlar :| mas achava isso interessante. Hoje em dia me interesso por programação em Java, já que funciona em várias plataformas. Vc tem msn pra gente trocar umas idéias?
[email protected]
Postado originalmente por shinzo