Il manuale delle funzioni di C - STB1019/SkullOfSummer GitHub Wiki
Ogni linguaggio di programmazione ha le proprie librerie standard e solitamente ogni linguaggio ha delle documentazione in cui viene data una descrizione di ogni funzione nella libreria standard.
Per esempio in java
la documentazione è reperibile online, ossia (almeno per la versione 12), qui.
Ed in C? Esiste un manuale? Ovviamente sì!
Molto semplicemente, il manuale di ogni funzione in C è in realtà il man
di linux!
In sintesi, è possibile accedere alla descrizione di una particolare funzione C aprendo il terminale e scrivendo man 3 <nome_funzione>
o, per funzioni di sistema man 2 <nome_funzione>
. il 3
od il 2
sono fissi.
Supponiamo di voler cercare la documentazione relativa a atoi
. Per farlo, apriamo il terminale (Ctrl + Alt + T
) e scriviamo:
man 3 atoi
Abbiamo scritto man 3 atoi
e non man 2 atoi
perché atoi
non è una funzione importantissima per il sistema operativo.
Il risultato è il seguente
Solitamente in una entry di un manuale, sono essenziali le seguenti informazioni:
- header: indica quale header file bisogna includere per poter utilizzare senza problemi la funzione (in questo caso
stdlib
); - signature: indica quali sono gli input e l'output della funzione;
- descrizione: contiene informazioni spesso importanti per capire come la funzione opera;
- return value: indica la semantica del valore di ritorno della funzione stessa.
Spesso alcune funzioni necessitano di soddisfare alcune precondizioni. Per esempio consideriamo la funzione asprintf
(man 3 asprintf
):
Come si può vedere il man
specifica che è necessario definire la macro _GNU_SOURCE
prima di includere l'header relativo, in questo caso stdio.h
Alcune funzioni sono essenziali per il sistema operativo e meritano di stare in una sezione del man
a parte. Per esempio la funzione C stat
permette di reperire informazioni riguardanti un file in particolare.
Usare man 3 stat
non darà alcun risultato (siccome la funzione è essenziale per il sistema operativo). Per accedere alla relativa documentazione, è necessario eseguire man 2 stat
:
Come si può vedere questa funzione può essere usata con sicurezza solo includendo 3 differenti header files. Inoltre è essenziale per capire il risultato di stat
stessa.
Perché a volte bisogna usare man 2 <funzione>
ed a volte man 3 <funzione>
. Il motivo è che il manuale letto da man
ha varie sezioni, ognuna in cui sono contenute particolari descrizioni. In particolare la sezione 3
contiene tutte le descrizioni relative alla funzioni C, mentre 2
contiene le descrizioni delle "system calls". Se non si sceglie alcun numero, di default il man
usa la sezione 1.