PDA

View Full Version : [C] vedere stdio.h ecc..


gepeppe
13-10-2007, 09:46
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?

gepeppe
13-10-2007, 10:23
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.

gepeppe
13-10-2007, 10:31
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.

gepeppe
13-10-2007, 10:42
grazie.. cmq volevo dare un'cchiata alle funzioni come printf, strlcp et simili per le stringhe.. pura curiosità.. :D

dad_89
13-10-2007, 19:44
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?

dad_89
14-10-2007, 10:31
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?" :)

recoil
16-10-2007, 09:48
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

gepeppe
16-10-2007, 12:41
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". :)

recoil
16-10-2007, 13:46
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

dad_89
16-10-2007, 15:27
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.

recoil
16-10-2007, 15:37
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:

gepeppe
16-10-2007, 15:49
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

dad_89
16-10-2007, 15:57
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!

recoil
16-10-2007, 16:01
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.