avr — в Atmel Studio 6 нет новых и удаляемых операторов для переполнения стека

Я использую ATMega32 UC с Atmel Studio 6.
У меня есть код, который содержит new оператор.
Когда я пытаюсь использовать его, он говорит, что он не определен, и я не знаю почему.

Я что-то искал в Google, но пока ничего не нашел. Все, что я мог найти, это кусочки кода, который определяет new а также delete операторы, но я действительно не хочу работать таким образом. Так же nullptr пропал, отсутствует.

Любые другие решения?

1

Решение

Вполне возможно использовать динамическое управление памятью во встроенных ситуациях — вам просто нужно быть осторожным, как вы это делаете. В этом случае, используя malloc() а также free() Вероятно, проще, хотя, чтобы помочь с совместимостью, вы можете определить их как new а также delete, Хороший источник информации по теме закончен на AVR Freaks.

Причина, по которой эти операторы не существуют, заключается в том, что AVR-GCC не полностью поддерживает C ++, только его части. Отчасти это связано с природой встроенного программирования — некоторые из более продвинутых функций C ++ могут быстро жевать флэш-память и оперативную память. Аргумент C vs C ++ на встроенных платформах является старым и часто горячим, но обычно сводится к ситуации. Вот еще один другая тема форума на предмет.

3

Другие решения

Это звучит как встроенный материал. Это не редкий случай, когда вы можете использовать только C, а не C ++.

В любом случае, new / delete — и malloc () / free () — не очень хорошая идея во встроенном мире. Ваша программа должна работать при любых обстоятельствах. Есть ни за что терпеть неудачу. Это просто n.A. У вас нет консоли или файла журнала, чтобы написать сообщение, или, если у вас есть, никто не проверит это, никто не обработает ошибку. Вы можете мигать красным светодиодным индикатором, но в большинстве случаев это не разрешено, например, нажатие педали тормоза должно приводить в действие тормоз, а не красный светодиод.

Вы должны установить пулы фиксированного размера вместо того, чтобы динамически распределять / освобождать элементы, и у вас нет возможности не обрабатывать любые возможные входные данные. Ваш код будет полон определений «MAX _…».

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector