2016-12-03 5 views
0

Я работаю над C++, используя IAR EMBEDDED WORK BENCH. Я столкнулся с проблемой при вызове функции от main().Увеличить размер массива unsigned char

Моя программа используется для извлечения данных из протоколов счетчика через метр. в моей программе я объявил массив размером unsigned char размера 255. Но данные, поступающие от счетчика, больше 255. Есть ли возможности увеличить размер массива unsigned char? На данный момент я объявил еще один массив без знака, но это не решает мою проблему. Также я прошел через это link, но я не могу получить помощь. Я привязался к нему почти месяц, поэтому я решил отправить свой вопрос здесь, чтобы получить помощь.

Любая помощь будет высоко оценена.

+1

Если компилятор и целевая платформа никоим образом не ограничивают вас, то да, вы можете увеличить размер. Количество элементов в массиве не имеет никакого отношения к типу данных элемента. Или вы можете просто делать несколько чтений в цикле. –

+0

Никогда не слышал об этой вещи IAR, но является ли это самостоятельной реализацией C++? У вас есть полный доступ к стандартной библиотеке? Вы не можете увеличить размер сырых массивов во время работы программы, но стандартная библиотека предлагает типы контейнеров, которые могут изменять их размер. –

ответ

0

в моей программе я объявил неподписанный обугленный массив размера 255 Я предполагаю, что вы что-то вроде этого:

char array[255]; 

Вы не сможете расширить эту переменный, потому что это выделить в стеке.

Но вы можете использовать кучу:

char* array = new char[255]; 

Это будет возможно сохранить переменную и изменить его размер с другим новым вызовом (если вы хотите продлить не забудьте скопировать ваши старые данные, и не забудьте удалить старый массив).


Или если вы можете (не знаю, что многое о вашей цели), просто использовать STL vector:

std::vector<char> array(255); 

То же самое, как:

std::vector<char> array; 
array.reserve(255); 

Это контейнер имеет некоторые функции-члены, такие как resize, которые помогут вам (не забудьте скопировать ваши данные, если вам нужно)

+1

Некоторые исследования Google, посвященные «IAR embedded», получают один из них: https://www.iar.com/iar-embedded-workbench/language-standards/. Информация там приводит меня к выводу, что OP не обязательно использует полнофункциональную реализацию C++, т. Е. 'Std :: vector' может быть недоступна для него. Кроме того, динамическое распределение из бесплатного магазина, как правило, является потенциальной проблемой во встроенном мире. –

+0

Я тоже этого боялся, потому что он уже не использовал его. Я отредактирую, чтобы получить более ясное спасибо. –

Смежные вопросы