ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
26 июня
1308807 Топик полностью
Nikolay_Po (12.05.2023 00:27, просмотров: 267) ответил Eddy_Em на Я-то не пользуюсь?
Ну, я о том же. Вы просто не застали - я из раза в раз повторяю: "Хочешь писать качественный код - всегда включай полную оптимизацию и LTO! Так больше шансов сразу увидеть баг в коде до того, как он вылезет потом, по мере усложнения проекта". Нет у компилятора чрезмерной оптимизации, если не включать флаги быстрой, но неточной математики и ещё там по мелочи, по умолчанию выключенные. Зато есть недостаточно тщательно проработанный код. 

Например, в примере FreeMODBUS, см. ссылку, у обоих переменных не хватает квалификаторов изменчивости и он не будет работать с полной оптимизацией.

https://github.com/cwalter-at/freemodbus/blob/master/demo/AVR/port/portevent.c


Нередко, не удаётся даже просто скомпилировать библиотечный код. Тот же openocd собрать, с -O3 при включённых предупреждениях-ошибках, нужно примерно в 4х десятках мест правки внести (пробовал для прикола). Забытая инициализация, вылеты за границы массива - всё есть в релизе. И высокая оптимизация заставляет компилятор проработать код тщательнее, поэтому находит больше ошибок.