Оптимизация цикла

#c #c-preprocessor #preprocessor-directive

#c #c-препроцессор #директива препроцессора

Вопрос:

В программировании на C мы можем включать / отключать оптимизацию цикла с помощью директивы препроцессора #pragma.

В каком сценарии оптимизация цикла должна быть отключена?

Комментарии:

1. Нет, в программировании на C нет явного контроля над оптимизациями и #pragma поведение определяется реализацией. Может быть, вы имеете в виду MSVC или что-то в этом роде, и если это так, вам следует пометить свой вопрос как таковой…

Ответ №1:

Оптимизация отключена по умолчанию при компиляции для отладки (чтобы строки исходного кода в отладчике точно соответствовали выполняемому коду).

Вы бы использовали pragma только в очень специфических обстоятельствах, таких как:

Комментарии:

1. Скорее всего, это не ошибка оптимизации, а случай, когда ваш код вызывает UB, если код «кажется, работает» с отключенной оптимизацией.

2. Я согласен с @R. Каждый программист на C действительно должен прочитать все 3 части того, что каждый программист на C должен знать о неопределенном поведении из блога LLVM.