Проблемка с дигиспарком
- Войдите на сайт для отправки комментариев
Чт, 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 чото поправить, придёт - спросим
А если не для массива ? ругается ?
Не ругается
Без ковыряния в ядре - надо просто выделить область sizeof(int16_t)*n байтов и указатель на эту область сохранить в arr.
Без ковыряния в ядре - надо просто выделить область sizeof(int16_t)*n байтов и указатель на эту область сохранить в arr.
Думал, что оператор new именно это и делает )))
Вот так работает
Просто его видимо не добавили под нестандартный тип данных.
Видимо да. Ну и фиг с ним, на атмегах calloc тоже работает и ладно )))
Думал, что оператор new именно это и делает )))
Нет, он еще и вызывает конструктор.
Но есть еще одна непонятка - в одной своей библиотеке отметил несколько методов как deprecated и получил ошибку
Опять же для атмег компилируется нормально, а тут - ни в какую. Что за косячище )))
Думал, что оператор new именно это и делает )))
Нет, он еще и вызывает конструктор.
Да я уже понял, что у аддона с С++ кривовато как-то