Programación avanzada en el entorno UNIX por W. Richard Stevens afirma:¿Qué es una variable automática en este contexto setjmp/longjmp?
"¿Cuáles son los estados de las variables automáticas y registran variables de la función principal?"
con respecto a lo que sucede cuando longjmp
regresa a la función principal (u otra función) desde algún lugar más abajo en la pila.
Se llega a decir:
"Depende mayoría de las implementaciones no tratan de hacer retroceder estas variables automáticas y registrar las variables, pero todo lo que las normas decir es que sus valores son indeterminados.. Si usted tiene una variable automática que no desea que se deshace, definirla con el atributo
volatile
. las variables que se declaran global o estática se quedan solos cuando se ejecutalongjmp
.
Parece que está diciendo que las variables de pila normales no tendrán sus valores establecidos en lo que eran en el momento del setjmp, pero que el resto de la función no podría depender de sus variables de pila después de la vuelta larga a lo que parece loco, así que supongo que estoy equivocado.
¿Alguien puede definir "variables automáticas" para mí y explicar qué específicamente no se establece en su valor original y por qué?
Una variable automática es simplemente una con la clase de almacenamiento 'auto', que es la predeterminada en las variables de función que no tienen otra declaración de clase de almacenamiento. Es una palabra clave, ya sabes. – tchrist