Programmazione Avanzata in UNIX Environment di W. Richard Stevens afferma:Che cos'è una variabile automatica in questo contesto setjmp/longjmp?
"Quali sono gli stati delle variabili automatiche e registrano variabili nella funzione principale?"
in relazione a ciò che accade quando si esegue il longjmp
su main (o un'altra funzione) da qualche parte più in basso nella pila.
E continua dicendo:
"Dipende maggior parte delle implementazioni non cercano di ripristinare questi variabili automatiche e registrare le variabili, ma tutto ciò che gli standard dire è che i loro valori sono indeterminati.. Se si dispone di un variabile automatica che non si desidera rollback, definirlo con l'attributo
volatile
. variabili dichiarate globale o statica sono lasciati soli quandolongjmp
viene eseguito.
Sembra che stia dicendo che le normali variabili stack non avranno i loro valori impostati su ciò che erano al momento del setjmp - ma poi il resto della funzione non poteva contare sulle sue variabili stack dopo il longjmp indietro ad esso che sembra pazzo, quindi immagino di sbagliarmi.
Qualcuno può definire "variabili automatiche" per me e spiegare cosa specificamente non è impostato sul valore originale e perché lo è?
Una variabile automatica è semplicemente una con la classe di memoria 'auto', che è l'impostazione predefinita sulle variabili di funzione che non hanno altre dichiarazioni di classi di memoria. È una parola chiave, lo sai. – tchrist