Цитата(Сергей Борщ @ Oct 27 2015, 19:21)

Да и перезагрузка не спасет. gcc очень хорошо умеет подставлять значения констант из константных переменных (и даже из полей структур) прямо в код.
Подтверждаю. И не только gcc, но и armcc KEIL. Ушло, когда такие изменяемые конфигурационные константы собрались в одну кучу в секции. Видимо, поэтому я не стал заморачиваться с volatile, поскольку свод в секцию (в одну область памяти только с данными, которую можно переписывать) изменяемых констант - крутая фразочка вышла

- с помощью присвоения атрибутов просто неизбежен и необходим при решении поставленно задачи и пресёк одновременно inline-стремление компилятора. Убедил меня
scifi, что для строгости, ясности и безопасности стОит объявлять volatile.
ПЫ.СЫ.:
1. Для теста добавил для одной такой "переменной константы" в проекте
volatile. Собрал. Загрузил. Вылетел в hard fault из инициализации еще перед main.
2. Есть атрибут __attribute__((noinline)), который предотвращает использование значения константной переменной непосредственно как операнд инструкции ("прямо в коде" в терминах
Сергей Борщ). Мой макрос, который размещает константные настройки, выглядит так:
Код
#define ATS(s) __attribute__((section(s), noinline, used))
Так что "забъю" я пока на
volatile.
Сообщение отредактировал KnightIgor - Oct 28 2015, 15:55