consideri il seguente pezzo di codice:Come impedire a g ++ di ottimizzare un ciclo controllato da una variabile che può essere modificata da un IRQ?
unsigned global;
while(global);
global
viene modificato in una funzione che viene richiamata da un IRQ. Tuttavia, g ++ rimuove il test "is-not-zero" e traduce il ciclo while in un loop infinito.
La disattivazione dell'ottimizzazione del compilatore risolve il problema, ma C++ offre un costrutto linguistico per questo?
@ Styne666: il titolo è la domanda – Necrolis
Vedere anche http://stackoverflow.com/q/7083482/594137 –
@ Styne666 - non è una buona pratica scrivere codice che richiede una specifica configurazione del compilatore per funzionare. Pertanto, disabilitare l'ottimizzazione non è un'opzione per il codice di produzione. – 0xbadf00d