X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=1dfaaf92f7d4da2fa3eedac8fa5b57f7c31adbf8;hp=77178be9b20963bc1475f422ef99dd8ff978c7c4;hb=f67bf0a685d61f70c3536e1f258b96a658162f9e;hpb=cd905cd37ac75847fdbfcc6fb4d2fd094dd808b7 diff --git a/intro.tex b/intro.tex index 77178be..1dfaaf9 100644 --- a/intro.tex +++ b/intro.tex @@ -297,9 +297,19 @@ quelli definiti negli altri standard descritti nelle sezioni successive. \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.} @@ -307,7 +317,6 @@ quelli definiti negli altri standard descritti nelle sezioni successive. \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 @@ -317,6 +326,63 @@ header file soltanto le funzionalit 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}