Установка размера массива

danis
Offline
Зарегистрирован: 03.09.2013

В EEPROM хранятся ID некторых модулей. В первой ячейке количесто этих ID, в последущих ячейках хранятся сами ID.

Я хочу считать первую ячейку и создать массив такого размера и заполнить его индетификаторами.

byte countMod = EEPROM.read(0);

byte IDs[countMod];

Но так объявить масив не получается. Подскажите как решить эту проблему.

Вот какая ошибка: error: array bound is not an integer constant

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Один из вариантов - создать массив максимальной длины. А в countMod держать реальное количество, его и использовать в циклах и т.п.
Другие варианты зависят от задачи, потому что здесь Ваше видение решение задачи, а оно (решение) может быть совсем другим. Так часто бывает.

 

Geronimo
Offline
Зарегистрирован: 06.05.2013

Создать массив в куче

byte countMod = EEPROM.read(0)

byte* data = (byte*) malloc( countMod );

 

danis
Offline
Зарегистрирован: 03.09.2013

Ообъявлять массив большого размера не самое оптимальное решение, особенно есди это массив структуры в которой много полей.

toc
Offline
Зарегистрирован: 09.02.2013

danis, зачем что-то копировать из eeprom в ram, тем более "большого размера"? Почему бы не использовать данные прямо из eeprom? Причина "так быстрее" принимается вместе с обоснованием необходимости "быстрее" и результатами замеров скорости "медленной" работы. И посмотрите библиотеку EepromEx.