Arduino;динамически получаемые элементы массива;Массив имеет структуру типа, которая включает строки разного размера - PullRequest
0 голосов
/ 21 декабря 2018

в Arduino C ++ У меня есть следующая структура:

struct acceptedCommand {
 String Command;
 int   switchcase;
};

Затем я инициализирую массив вышеуказанной структуры следующим образом:

const acceptedCommand acceptedCommands[] = { 
  {"set-amountofcells", 1}, 
  {"set-cell-min-voltage", 2},
  {"set-cell-max-voltage", 7}
  ...
};

Желаемый результат: Я хочу динамически возвращать количество элементов в этом массиве.

Что я уже пробовал: Я не могу использовать функцию SizeOf, поскольку она возвращает только общее количество байтов, использованных в массиве.

Я также не могу разделить значение, возвращаемое SizeOf, на размер структуры, поскольку размер каждого элемента массива различен (из-за разной длины строки).

Так как же я могу получить количество элементов в массиве acceptCommands [] динамически?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

sizeof(acceptedCommands)/sizeof(acceptedCommand) должно дать вам количество структур в массиве, то есть количество команд.

Вы можете подумать, что ваша структура имеет переменный размер, но это не так, sizeof String известен при компиляциивремя, даже если длина его массива char отличается, потому что String будет объектом, который, вероятно, содержит среди прочего указатель на массив char, а указатель sizeof известен во время компиляции.

0 голосов
/ 21 декабря 2018

Вам нужно будет использовать векторы вместо массивов.Используйте Стандартный C ++ для Arduino .Тогда вы сможете использовать вектор stl в Arduino.

...