Я работаю над проектом встроенного Си и хотел бы инициализировать
время компиляции, структура, которая хранится во флэш-памяти (0x1200u), но я
продолжайте получать странные ошибки компиляции.
Это неудивительно, поскольку C не поддерживает то, что вы пытаетесь сделать. Вы можете предоставить инициализаторы для объектов, которые C выделяет, включая указатели, но язык C не имеет понятия об объектах, которые существуют независимо. Действительно, C не дает никаких гарантий относительно того, что происходит, когда вы что-либо делаете с (MY_STRUCT_DATA_TYPE *)(0x1200u)
, кроме преобразования его обратно в целое число.
Ошибка, которую я получаю: " Ожидается" {"до" ("токен. "
Компилятор жалуется, потому что в
MY_FLASH_STRUCT MY_InitdStruct = {
, расширение MY_FLASH_STRUCT
не является типом, поэтому конструкция не является допустимым объявлением. Это также не допустимое присваивание, но даже если это так, операторы присваивания являются исполняемыми и поэтому могут появляться только внутри функций.
Назначение объекта по определенному адресу будет функцией компоновщика. Можно ли назначить объект конкретному адресу, который вы хотите, зависит от системы, и механизм, если таковой имеется, зависит от вашей цепочки инструментов.