\textbf{Standard} & \textbf{Contenuto} \\
\hline
\hline
- \texttt{stdio.h} & I/O bufferizzato in standard ANSI C.\\
- \texttt{stdlib.h} & definizioni della libreria standard.\\
- \texttt{...} & Da completare.\\
+ \file{assert.h}& Verifica le asserzioni fatte in un programma.\\
+ \file{cpio.h} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{} & .\\
+ \file{stdio.h} & I/O bufferizzato in standard ANSI C.\\
+ \file{stdlib.h}& definizioni della libreria standard.\\
\hline
\end{tabular}
\caption{Elenco dei vari file di include definiti dallo standard POSIX.}
\end{table}
-
In realtà \acr{glibc} ed i relativi header file definiscono un insieme di
funzionalità in cui sono incluse come sottoinsieme anche quelle previste dallo
standard ANSI C. È possibile ottenere una conformità stretta allo standard
usare le varie estensioni al linguaggio e al preprocessore da esso supportate.
+\subsection{I tipi di dati primitivi}
+\label{sec:intro_data_types}
+
+Uno dei problemi di portabilità del codice più comune è quello dei tipi di
+dati utilizzati nei programmi, che spesso variano da sistema a sistema, o
+anche da una architettura ad un altra (ad esempio passando da macchine con
+processori 32 bit a 64).
+
+Storicamente alcuni tipi di dati definiti dallo standard ANSI C sono sempre
+stati associati ad alcune variabili nei sistemi Unix, ad esempio la posizione
+corrente all'interno di un file è sempre stato associato ad un intero a 32
+bit, mentre il numero di dispositivo è sempre stato associato ad un intero a
+16 bit. Tutto questo ovviamente costituisce un incubo per la portabilità tutte
+le volte che, con l'evolversi delle piattaforme hardware, alcuni di questi
+tipi si sono rivelati inadeguati, e se ne è dovuto cambiare la dimensione.
+
+\begin{table}[htb]
+ \footnotesize
+ \centering
+ \begin{tabular}[c]{|l|l|}
+ \hline
+ \textbf{Tipo} & \textbf{Contenuto} \\
+ \hline
+ \hline
+ \type{caddr\_t} & core address.\\
+ \type{clock\_t} & contatore del tempo di sistema.\\
+ \type{dev\_t} & Numero di dispositivo.\\
+ \type{gid\_t} & Identificatore di un gruppo.\\
+ \type{ino\_t} & Numero di \textit{inode}.\\
+ \type{key\_t} & Chiave per il System V IPC.\\
+ \type{loff\_t} & Posizione corrente in un file.\\
+ \type{mode\_t} & Attributi di un file.\\
+ \type{nlink\_t} & Contatore dei link su un file.\\
+ \type{off\_t} & Posizione corrente in un file.\\
+ \type{pid\_t} & Identificatore di un processo.\\
+ \type{rlim\_t} & Limite sulle risorse.\\
+ \type{sigset\_t}& Insieme di segnali.\\
+ \type{ssize\_t} & Dimensione di un oggetto.\\
+ \type{ssize\_t} & Dimensione in numero byte ritornata dalle funzioni.\\
+ \type{ptrdiff\_t}& Differenza fra due puntatori.\\
+ \type{time\_t} & Numero di secondi (in tempo di calendario).\\
+ \type{uid\_t} & Identificatore di un utente.\\
+ \hline
+ \end{tabular}
+ \caption{Elenco dei tipi primitivi, definiti in \file{sys/types.h}.}
+ \label{tab:intro_primitive_types}
+\end{table}
+
+Per questo motivo tutte le funzioni di libreria di solito non fanno
+riferimento ai tipi standard del linguaggio C, ma ad una serie di \textsl{tipi
+ primitivi}, riportati in \tabref{tab:intro_primitive_types}, caratteristici
+di ogni sistema, definiti nell'header file \file{sys/types.h}, che associano i
+tipi utilizzati dalle funzioni di sistema ai tipi elementari supportati dal
+compilatore C.
+
+
+
\subsection{Lo standard IEEE -- POSIX}
\label{sec:intro_posix}