+\item[\macro{\_LARGEFILE\_SOURCE}] definendo questa macro si rendono
+ disponibili alcune funzioni che consentono di superare una inconsistenza
+ presente negli standard con i file di grandi dimensioni, ed in particolare
+ definire le due funzioni \func{fseeko} e \func{ftello} che al contrario
+ delle corrispettive \func{fseek} e \func{ftell} usano il tipo di dato
+ specifico \ctyp{off\_t} (vedi sez.~\ref{sec:file_fseek}).
+
+\item[\macro{\_LARGEFILE64\_SOURCE}] definendo questa macro si rendono
+ disponibili le funzioni di una interfaccia alternativa al supporto di valori
+ a 64 bit nelle funzioni di gestione dei file (non supportati in certi
+ sistemi), caratterizzate dal suffisso \texttt{64} aggiunto ai vari nomi di
+ tipi di dato e funzioni (come \ctyp{off64\_t} al posto di \ctyp{off\_t} o
+ \func{lseek64} al posto di \func{lseek}).
+
+ Le funzioni di questa interfaccia alternativa sono state proposte come una
+ estensione ad uso di transizione per le \textit{Single UNIX Specification},
+ per consentire la gestione di file di grandi dimensioni anche nei sistemi a
+ 32 bit, in cui la dimensione massima, espressa con un intero, non poteva
+ superare i 2 gigabyte. Nei nuovi programmi queste funzioni devono essere
+ evitate, a favore dell'uso macro \macro{\_FILE\_OFFSET\_BITS}, che definita
+ al valore di \texttt{64} consente di usare in maniera trasparente le
+ funzioni dell'interfaccia classica.
+
+\item[\macro{\_FILE\_OFFSET\_BITS}] la definizione di questa macro al valore
+ di \texttt{64} consente di attivare la conversione automatica di tutti i
+ riferimenti a dati e funzioni a 32 bit nelle funzioni di interfaccia ai file
+ con le equivalenti a 64 bit, senza dover utilizzare esplicitamente
+ l'interfaccia alternativa appena illustrata. In questo modo diventa
+ possibile usare le ordinarie funzioni per effettuare operazioni a 64 bit sui
+ file anche su sistemi a 32 bit.\footnote{basterà ricompilare il programma
+ dopo averla definita, e saranno usate in modo trasparente le funzioni a 64
+ bit.}
+
+ Se la macro non è definita o è definita con valore \texttt{32} questo
+ comportamento viene disabilitato, e sui sistemi a 32 bit verranno usate le
+ ordinarie funzioni a 32 bit, non avendo più il supporto per file di grandi
+ dimensioni. Su sistemi a 64 bit invece, dove il problema non sussiste, la
+ macro non ha nessun effetto.
+
+\item[\macro{\_ATFILE\_SOURCE}] definendo questa macro si rendono disponibili
+ le estensioni delle funzioni di creazione, accesso e modifica di file e
+ directory che risolvono i problemi di sicurezza insiti nell'uso di pathname
+ relativi con programmi \itindex{thread} \textit{multi-thread} illustrate in
+ sez.~\ref{sec:file_openat}.
+
+\item[\macro{\_REENTRANT}] definendo questa macro, o la equivalente
+ \macro{\_THREAD\_SAFE} (fornita per compatibilità) si rendono disponibili le
+ versioni \index{funzioni!rientranti} rientranti (vedi
+ sez.~\ref{sec:proc_reentrant}) di alcune funzioni, necessarie quando si
+ usano i \itindex{thread} \textit{thread}. Alcune di queste funzioni sono
+ anche previste nello standard POSIX.1c, ma ve ne sono altre che sono
+ disponibili soltanto su alcuni sistemi, o specifiche del \acr{glibc}, e
+ possono essere utilizzate una volta definita la macro.
+
+\item[\macro{\_FORTIFY\_SOURCE}] definendo questa macro viene abilitata
+ l'inserimento di alcuni controlli per alcune funzioni di allocazione e
+ manipolazione di memoria e stringhe che consentono di rilevare
+ automaticamente alcuni errori di \textit{buffer overflow} nell'uso delle
+ stesse. La funzionalità è stata introdotta a partire dalla versione 2.3.4
+ delle \acr{glibc} e richiede anche il supporto da parte del compilatore, che
+ è disponibile solo a partire dalla versione 4.0 del \texttt{gcc}.
+
+ Le funzioni di libreria che vengono messe sotto controllo quando questa
+ funzionalità viene attivata sono, al momento della stesura di queste note,
+ le seguenti: \func{memcpy}, \func{mempcpy}, \func{memmove}, \func{memset},
+ \func{stpcpy}, \func{strcpy}, \func{strncpy}, \func{strcat}, \func{strncat},
+ \func{sprintf}, \func{snprintf}, \func{vsprintf}, \func{vsnprintf}, e
+ \func{gets}.
+
+ La macro prevede due valori, con \texttt{1} vengono eseguiti dei controlli
+ di base che non cambiano il comportamento dei programmi se si richiede una
+ ottimizzazione di livello uno o superiore,\footnote{vale a dire se si usa
+ l'opzione \texttt{-O1} o superiore del \texttt{gcc}.} mentre con il
+ valore \texttt{2} vengono aggiunti maggiori controlli.