Проблемка с дигиспарком
- Войдите на сайт для отправки комментариев
Чт, 08/09/2022 - 11:09
Пишу в песочнице, т.к. вопрос совсем детский. Столкнулся с неожиданным - этот код нормально компилируется для атмег, но не не хочет компилироваться для дигиспарка
int16_t *arr = NULL;
void setup()
{
Serial.begin(9600);
arr = new int16_t[5];
for (byte i = 0; i < 5; i++)
{
arr[i] = i;
}
}
void loop()
{
}
Выдает ошибку
/tmp/arduino_build_206278/sketch/double_blink1.ino.cpp.o: In function `setup': /mnt/B6F0D77CF0D74173/_Documents/Vladimir/YandexDisk/Arduino/generated_examples/double_blink1/double_blink1.ino:6: undefined reference to `operator new[](unsigned int)' collect2: error: ld returned 1 exit status
Аддон для дигиспарка используется этот - http://digistump.com/package_digistump_index.json
ОС - линукс минт
И как быть?
Может там нет "кучи" ?
А если не для массива ? ругается ?
Петрович говорил, надо в исходниках malloc.c чото поправить, придёт - спросим
А если не для массива ? ругается ?
Не ругается
int16_t *arr = NULL; void setup() { Serial.begin(9600); arr = new int16_t(5); } void loop() { }Без ковыряния в ядре - надо просто выделить область sizeof(int16_t)*n байтов и указатель на эту область сохранить в arr.
Без ковыряния в ядре - надо просто выделить область sizeof(int16_t)*n байтов и указатель на эту область сохранить в arr.
Думал, что оператор new именно это и делает )))
Вот так работает
int16_t *arr = NULL; void setup() { Serial.begin(9600); arr = (int16_t *)calloc(5, sizeof(int16_t)); for (byte i = 0; i < 5; i++) { arr[i] = i; } } void loop() { }Просто его видимо не добавили под нестандартный тип данных.
Видимо да. Ну и фиг с ним, на атмегах calloc тоже работает и ладно )))
Думал, что оператор new именно это и делает )))
Нет, он еще и вызывает конструктор.
Но есть еще одна непонятка - в одной своей библиотеке отметил несколько методов как deprecated и получил ошибку
Опять же для атмег компилируется нормально, а тут - ни в какую. Что за косячище )))
Думал, что оператор new именно это и делает )))
Нет, он еще и вызывает конструктор.
Да я уже понял, что у аддона с С++ кривовато как-то