Я использую ATMega32 UC с Atmel Studio 6.
У меня есть код, который содержит new
оператор.
Когда я пытаюсь использовать его, он говорит, что он не определен, и я не знаю почему.
Я что-то искал в Google, но пока ничего не нашел. Все, что я мог найти, это кусочки кода, который определяет new
а также delete
операторы, но я действительно не хочу работать таким образом. Так же nullptr
пропал, отсутствует.
Любые другие решения?
Вполне возможно использовать динамическое управление памятью во встроенных ситуациях — вам просто нужно быть осторожным, как вы это делаете. В этом случае, используя malloc()
а также free()
Вероятно, проще, хотя, чтобы помочь с совместимостью, вы можете определить их как new
а также delete
, Хороший источник информации по теме закончен на AVR Freaks.
Причина, по которой эти операторы не существуют, заключается в том, что AVR-GCC не полностью поддерживает C ++, только его части. Отчасти это связано с природой встроенного программирования — некоторые из более продвинутых функций C ++ могут быстро жевать флэш-память и оперативную память. Аргумент C vs C ++ на встроенных платформах является старым и часто горячим, но обычно сводится к ситуации. Вот еще один другая тема форума на предмет.
Это звучит как встроенный материал. Это не редкий случай, когда вы можете использовать только C, а не C ++.
В любом случае, new / delete — и malloc () / free () — не очень хорошая идея во встроенном мире. Ваша программа должна работать при любых обстоятельствах. Есть ни за что терпеть неудачу. Это просто n.A. У вас нет консоли или файла журнала, чтобы написать сообщение, или, если у вас есть, никто не проверит это, никто не обработает ошибку. Вы можете мигать красным светодиодным индикатором, но в большинстве случаев это не разрешено, например, нажатие педали тормоза должно приводить в действие тормоз, а не красный светодиод.
Вы должны установить пулы фиксированного размера вместо того, чтобы динамически распределять / освобождать элементы, и у вас нет возможности не обрабатывать любые возможные входные данные. Ваш код будет полон определений «MAX _…».