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 ?
Versão Imprimível
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?
Citação:
Postado originalmente por shinzo