View Full Version : [C] vedere stdio.h ecc..
salve, volevo vedere come sono fatte le funzioni di stdio.h, string.h ecc...solo che in questi file c'è solo il prototipo delle funzioni, ma io volevo vedere l'implementazione!! Dove la trovo?
grazie
variabilepippo
13-10-2007, 10:17
salve, volevo vedere come sono fatte le funzioni di stdio.h, string.h ecc...solo che in questi file c'è solo il prototipo delle funzioni, ma io volevo vedere l'implementazione!! Dove la trovo?
Vuoi quella del tuo compilatore (quale è?) o un'implementazione open-source?
io uso kdevelop 3 (suse), ma qual'è la differenza fra l'implementazione del mio compilatore e una open-source?? non dovrebbe essere la stessa?
a me interessa (per ora) solo leggerla...e vorrei leggerne una standarn, cioè una che sò che anche altri compilatori usano e che non usa solo il mio..
variabilepippo
13-10-2007, 10:28
ma qual'è la differenza fra l'implementazione del mio compilatore e una open-source
Ogni compilatore usa una diversa implementazione della C Standard Library (http://en.wikipedia.org/wiki/C_standard_library), se per esempio utilizzassi Microsoft Visual C++ non avresti accesso ai sorgenti della libreria C.
QUI (http://ftp.gnu.org/gnu/glibc/) trovi l'implementazione GNU.
grazie per la spiegazione :D
un'altra domandina..ma del link che mi hai dato, http://ftp.gnu.org/gnu/glibc/ , quale file dovrei scaricare??
variabilepippo
13-10-2007, 10:38
La versione più recente è la 2.6.1 (http://ftp.gnu.org/gnu/glibc/glibc-2.6.1.tar.gz), considera però che studiare il sorgente della gLIBC non è certo una passeggiata per chi non conosce molto bene il C...
Non so quali siano le tue finalità, comunque ti segnalo che in Rete trovi anche versioni "light" della C Standard Library.
grazie.. cmq volevo dare un'cchiata alle funzioni come printf, strlcp et simili per le stringhe.. pura curiosità.. :D
Su linux basta andare in /usr/include/ per vedere le lib del linguaggio c.
variabilepippo
14-10-2007, 09:42
Su linux basta andare in /usr/include/ per vedere le lib del linguaggio c.
Nella directory /usr/include trovi gli headers o i sorgenti delle librerie?
Nella directory /usr/include trovi gli headers o i sorgenti delle librerie?
Gli headers.
variabilepippo
14-10-2007, 10:33
Gli headers.
La richiesta di Gepeppe era chiara: "salve, volevo vedere come sono fatte le funzioni di stdio.h, string.h ecc...solo che in questi file c'è solo il prototipo delle funzioni, ma io volevo vedere l'implementazione!! Dove la trovo?" :)
se vai sul ftp.gnu.org come ti è stato segnalato puoi scaricare una versione qualunque, dato che il tuo scopo è puramente didattico
se vuoi qualcosa di più leggero c'è uClibc, una libreria più "leggera" che si usa in ambito embedded.
ti devo avvertire che se cerchi di mettere mano a quel codice è un casino, già se guardi delle funzioni semplici come strlen devi fare un po' di fatica. i commenti non abbondano, almeno con uClibc...
per non parlare di quando metti mano ai sorgenti del kernel :D
li ho visti, ma...mamma mia, è davvero complicato..cioè più che altro non si capisce nulla :D!!! uffa...i sorgenti del kernel anche mi intrigano... :D devo dargli un'occhiata!!! ;)
variabilepippo
16-10-2007, 12:46
li ho visti, ma...mamma mia, è davvero complicato..cioè più che altro non si capisce nulla !!
Ti avevo avvertito con un esplicito "studiare il sorgente della gLIBC non è certo una passeggiata per chi non conosce molto bene il C". :)
li ho visti, ma...mamma mia, è davvero complicato..cioè più che altro non si capisce nulla :D!!! uffa...i sorgenti del kernel anche mi intrigano... :D devo dargli un'occhiata!!! ;)
c'è da perderci la testa
prima di tutto serve un buon background di C poi devi avere la pazienza di capire che strutture usano nel kernel e di cercare la definizione di tutte le macro che usano
secondo me a scopi didattici va bene leggere codice altrui, ma è meglio partire da qualcosa di meno complesso. ad esempio andare su sourceforge e scegliere un programma da guardare ed eventualmente modificare può essere un inizio
Per il la lettura del kernel ti consiglio di leggerti le versioni preistoriche come 00.1, 00.2 cosa che sto facendo attualmente anche io tra l'altro.
altrimenti puoi provare con il kernel di Minix, non ci ho avuto a che fare ma presumo sia più didattico e meno complesso di quello Linux.
oppure vai da zio cancelli e fatti dare i sorgenti del kernel di windows, così fai pratica anche con il debug :asd:
Per il la lettura del kernel ti consiglio di leggerti le versioni preistoriche come 00.1, 00.2 cosa che sto facendo attualmente anche io tra l'altro.
grazie a tutti per i consigli. come kernel preistorici intendi questi: http://www.kernel.org/pub/linux/kernel/Historic/ l?? cosi me le guardo un po....nel frattempo cerco programi semplici su sourceforge...consigli? ce ne sono cosi tant...:D :D
grazie a tutti per i consigli. come kernel preistorici intendi questi: http://www.kernel.org/pub/linux/kernel/Historic/ l?? cosi me le guardo un po....nel frattempo cerco programi semplici su sourceforge...consigli? ce ne sono cosi tant...:D :D
Esattamente!
grazie a tutti per i consigli. come kernel preistorici intendi questi: http://www.kernel.org/pub/linux/kernel/Historic/ l?? cosi me le guardo un po....nel frattempo cerco programi semplici su sourceforge...consigli? ce ne sono cosi tant...:D :D
non saprei consigliarti, l'ideale sarebbe trovare un progetto il cui codice sia MOLTO commentato :)
secondo me devi pensare a qualcosa che ti piace, ad esempio se ti diverte lavorare con le immagini prendi la libreria netpbm di linux e puoi sbizzarrirti, se ti piace lavorare con protocolli di rete scarica una qualsiasi implementazione di FTP e gioca con quello, ecc.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.