Я искал ключевое слово volatile
и для чего он, и ответ, который я получил, был в значительной степени:
Он использовался, чтобы предотвратить компилятор от оптимизации кода.
Были некоторые примеры, например, при опросе оборудования с отображением памяти: без volatile
цикл опроса был удален, поскольку компилятор мог распознать, что значение условия никогда не изменяется. Но так как был только один пример или, может быть, два, это заставило меня задуматься: существуют ли другие ситуации, когда нам нужно использовать volatile
с точки зрения избежания нежелательной оптимизации? Являются ли переменными условия единственным местом, где требуется volatile
?
Я предполагаю, что оптимизация является специфичной для компилятора и поэтому не указана в спецификации С++. Означает ли это, что мы должны испытывать чувство кишки, говоря Hm, я подозреваю, что мой компилятор покончит с этим, если я не объявлю эту переменную как volatile
, или есть какие-либо четкие правила для перехода по?