X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=f29d5e31e1e1844f6c627613e26a342cc437ccbd;hp=8bde54cbdcba74606b1d8107690c9a6e3a21a9dc;hb=613d2f30d1c3ec28c569578a7b7bab23a40e8fea;hpb=d6de060b2497ec17ae8a21ea458f8c2581b5d431 diff --git a/process.tex b/process.tex index 8bde54c..f29d5e3 100644 --- a/process.tex +++ b/process.tex @@ -1437,12 +1437,13 @@ stack all'indirizzo dove sono stati salvati i parametri, normale pensare di poter effettuare questa operazione. In generale però possono esistere anche realizzazioni diverse, per questo -motivo \macro{va\_list} è definito come \textsl{tipo opaco} e non può essere -assegnato direttamente ad un'altra variabile dello stesso tipo. Per risolvere -questo problema lo standard ISO C99\footnote{alcuni sistemi che non hanno - questa macro provvedono al suo posto \macro{\_\_va\_copy} che era il nome - proposto in una bozza dello standard.} ha previsto una macro ulteriore che -permette di eseguire la copia di un puntatore alla lista degli argomenti: +motivo \macro{va\_list} è definito come \textsl{tipo opaco}\index{tipo opaco} +e non può essere assegnato direttamente ad un'altra variabile dello stesso +tipo. Per risolvere questo problema lo standard ISO C99\footnote{alcuni + sistemi che non hanno questa macro provvedono al suo posto + \macro{\_\_va\_copy} che era il nome proposto in una bozza dello standard.} +ha previsto una macro ulteriore che permette di eseguire la copia di un +puntatore alla lista degli argomenti: \begin{prototype}{stdarg.h}{void va\_copy(va\_list dest, va\_list src)} Copia l'attuale valore \param{src} del puntatore alla lista degli argomenti su \param{dest}. @@ -1548,7 +1549,12 @@ salvare il contesto dello stack \end{functions} Quando si esegue la funzione il contesto corrente dello stack viene salvato -nell'argomento \param{env}, una variabile di tipo \type{jmp\_buf} che deve +nell'argomento \param{env}, una variabile di tipo +\type{jmp\_buf}\footnote{questo è un classico esempio di variabile di + \textsl{tipo opaco}\index{tipo!opaco}. Si definiscono così strutture ed + altri oggetti usati da una libreria, la cui struttura interna non deve + essere vista dal programma chiamante (da cui il nome) che li devono + utilizzare solo attraverso dalle opportune funzioni di gestione.} che deve essere stata definita in precedenza. In genere le variabili di tipo \type{jmp\_buf} vengono definite come variabili globali in modo da poter essere viste in tutte le funzioni del programma.