Considérese el siguiente fragmento de código:¿Cómo evitar que g ++ optimice un ciclo controlado por una variable que puede ser modificada por un IRQ?
unsigned global;
while(global);
global
se modifica en una función que se invoca por un IRQ. Sin embargo, g ++ elimina la prueba "is-not-zero" y traduce el ciclo while en un ciclo sin fin.
La desactivación de la optimización del compilador resuelve el problema, pero ¿ofrece C++ una construcción de lenguaje para ello?
@ Styne666: el título es la pregunta – Necrolis
Véase también http://stackoverflow.com/q/7083482/594137 –
@ Styne666 - no es una buena práctica escribir código que necesita una configuración específica del compilador para funcionar. Por lo tanto, deshabilitar la optimización no es una opción para el código de producción. – 0xbadf00d