Nikolay_Po (21.08.2023 17:25, просмотров: 79) ответил SciFi на Это не так работает. В заповедях написано, что переменная static
живёт от начала работы программы и до конца. Если взят её адрес,
переменную нельзя выкидывать. Всё, больше там ничего нет. Вы просто
транслируете распространённые мифы.
Так компилятор и не выкинет переменную (константу), и адрес
сохранит. Просто модифицирует адресную арифметику под ту область
памяти, куда ему удобно эту константу положить. К примеру, GCC с
-O3 -flto, может хранить константы в ОЗУ лишь потому, что для
чтения ПЗУ нужна особая процедура, увеличивающая время выполнения
кода (к примеру, в AVR). И я не мог заставить программу читать
серийный номер прямо из ПЗУ, до тех пор, пока не объявил константу
volatile.