Léxico TI › Programación › volatile

volatile

Programación Svenska → Actualizado: 2026-11-02

Calificador de tipo de C y C++ que obliga al compilador a realizar de verdad cada lectura y cada escritura de la variable.

El compilador suele suponer que la memoria solo cambia cuando el propio programa la cambia. Así, un bucle que espera una bandera puede acabar optimizado como bucle infinito, y dos escrituras seguidas a la misma dirección se funden en una. Para un registro de hardware o una bandera que activa una interrupción, ambas optimizaciones son letales. volatile, que llegó con ANSI C en 1989, las desactiva para esa variable concreta.

Y eso es todo lo que hace. No garantiza atomicidad ni orden respecto a otras variables, y el procesador sigue pudiendo reordenar accesos. Para hilos en varios núcleos hacen falta atómicos y barreras de memoria; la documentación del núcleo Linux dedica una página entera titulada «Why the volatile type class should not be used». El volatile de Java, por cierto, es otra cosa, con garantías de orden reales: misma palabra, distintas promesas.

← Volver al léxico