sladkoejka (05.07.2018 15:19 - 15:22, просмотров: 383) ответил SciFi на Ну уж нет. Если он удалит переменную volatile, то это будет вражеский компилятор (хотя всякие бывают, конечно). Но тут __no_operation() убирает необходимость в volatile, потому что __no_operation() "вызывает побочные эффекты", т.е. не может быть
ничего вражеского нет, в достаточно умных оптимизаторах такие вещи в порядке вещей. Если тело цикла пустое, а volatile переменную гарантированно никто не видит (нет возможности получить ссылку), то такой цикл можно спокойно удалять. Пользы от него никакого нет.
Более того, в более умных компиляторах такие вещи рубятся на этапе компилятции и компилятор просто не даст пометить локальную переменную как volatile, т.к. изменить её никто кроме локального кода не может.