Представление структуры в памяти
- Войдите на сайт для отправки комментариев
Чт, 09/07/2020 - 23:49
Дано: структура данных различных типов и вообще.
Задача: представить вышеперечисленное в виде массива/просто разбить на куски по байту, чтобы запихнуть во флэш STM32.
Догадываюсь, что оно рядом, но туплю. Может, можно сделать union, но тогда надо точно посчитать в байтах размер структуры. Есть ещё варианты?
Нет, придется писать код, который раскладывает "и вообще" в повторяемую последовательность байтов. Волшебного универсального средства нет в природе.
Спасибо. Жопа )))
Структуры - это те же классы. По сути вам надо написать метод класса, который сохраняет(извлекает) экземпляр класса в/из флеша
Дано: структура данных различных типов и вообще.
Задача: представить вышеперечисленное в виде массива/просто разбить на куски по байту, чтобы запихнуть во флэш STM32.
Догадываюсь, что оно рядом, но туплю. Может, можно сделать union, но тогда надо точно посчитать в байтах размер структуры. Есть ещё варианты?
ничо не понял. Вот структура "данных различных типов".
struct tm { int8_t tm_sec; /**< seconds after the minute - [ 0 to 59 ] */ int8_t tm_min; /**< minutes after the hour - [ 0 to 59 ] */ int8_t tm_hour; /**< hours since midnight - [ 0 to 23 ] */ int8_t tm_mday; /**< day of the month - [ 1 to 31 ] */ int8_t tm_wday; /**< days since Sunday - [ 0 to 6 ] */ int8_t tm_mon; /**< months since January - [ 0 to 11 ] */ int16_t tm_year; /**< years since 1900 */ int16_t tm_yday; /**< days since January 1 - [ 0 to 365 ] */ int16_t tm_isdst; /**< Daylight Saving Time flag */ };Вот её размер
вот она же байтами, "в виде массива", "кусками по байту"
или я, какабычно, чота с похмелья не догоняю?
Дед. Ты всё правильно описал. Вот чего ТС не догоняет загадка. Проще уже ничего быть не может.
Вот чего ТС не догоняет загадка.
Ну, заслушаем, как появицца.
Нет, не правильно. Потому что будет работать только в ограниченном частном случае, и нет никаких пояснений. Фактически подложил грабли.
А ну-ка, метод деда в целом логичный, не очень безопасный но логичный. Обратно так собрать та ещё фигня буит....Так жи?
хорошо. Перед struct забыл
#pragma pack(push,1)
после
#pragma pack(pop)
надеюсь, так правильней?
А ну-ка, метод деда в целом логичный, не очень безопасный но логичный. Обратно так собрать та ещё фигня буит....Так жи?
собирать так же. с учетом сообщения выше. Иначе, STM по умолчанию выравнивать начнёт хрен знает как.
хорошо. Перед struct забыл
#pragma pack(push,1)
после
#pragma pack(pop)
надеюсь, так правильней?
Нет. Вообще не в тему. Положи String в структуру, например, и попробуй.
Нет. Вообще не в тему. Положи String в структуру, например, и попробуй.
Не, ну да, если структура хранит указатель хоть на чо, тогда естес-сно этот вариант не пойдёт.
Это будет работать только для не зависимых, непосредственных типов.
Всем спасибо!
Указатель это скалярный тип.
Согласен, с терминами я путаюсь. Проправил.
Нет, не только. И еще осталось понять, что кроме механики языка есть еще логика приложения.