Я работаю над проектом в микроконтроллере, и мне нужно сохранить некоторые настройки. Представьте, что это iPod. Мне нужно сохранить различные настройки, такие как CurrentSongPlaying
, CurrentVolume
и т. д., чтобы при повторном включении я мог восстановить эти настройки. Проблема, с которой я сталкиваюсь, заключается в том, что имеет смысл хранить все мои энергонезависимые настройки в одной структуре, которую я могу сериализовать/десериализовать из памяти, но я не могу найти способ сделать это без того, чтобы класс выполнял сериализация/десериализация из энергонезависимой памяти, включая каждый класс, содержащий параметр, который необходимо сохранить для информации о размере/типе. Есть ли какой-то шаблон дизайна, который позволит мне сохранить все эти настройки в памяти, не зная, что я сохраняю?
Сохранение объектов при сохранении слабой связи
Ответы (2)
Похоже, вам просто нужен ассоциативный массив. Ассоциативный массив (или карта) — это контейнер, который позволяет сопоставлять разные значения с уникальными ключами. Он может иметь фиксированный или динамический размер в зависимости от реализации. В сочетании с надлежащим механизмом сериализации он позволяет сохранять и восстанавливать его состояние без необходимости заранее знать его содержимое.
Однако C не предоставляет эту структуру данных «из коробки». Посмотрите на этот вопрос для нескольких реализаций. Наиболее распространенной реализацией является хэш-таблица, также называемая хэш-картой.
ООП и классы нелегко реализовать на C.
Если использование C является обязательным, я бы написал структуру в файл.
Затем я читал их и анализировал во время инициализации при перезагрузке.
Вы можете думать об этом как о сериализации своих структур самостоятельно.