Обработка исключений с помощью Arduino IDE
Я использую порт STL, найденный здесь, и пытаюсь выполнить отладку с помощью простого try{ ...}catch{...}
цикл. При компиляции с помощью Arduino IDE я получаю сообщение об ошибке
обработка исключений отключена, для включения используйте -fexceptions.
Я не совсем понимаю, что это значит. Может ли Arduino просто не поддерживать исключения? Или -fexceptions
является флагом компилятора, который я могу включить?
@Snail Cadet, 👍3
Обсуждение2 ответа
Лучший ответ:
Как вы уже выяснили, добавьте -fexceptions
к флагам компилятора. Это можно сделать, изменив platform.txt
вашей установки Arduino IDE.
См. https://github.com/arduino/ArduinoCore-avr/blob/ мастер/платформа.txt#L28. Определено -fno-exceptions
, поэтому его тоже нужно удалить.
Отлично, это (полный) ответ, который я искал., @Snail Cadet
Arduino — очень ограниченная платформа, и для обработки исключений требуется довольно много скрытого кода, чтобы правильно раскрутить стек, где бы ни возникло исключение.
Поэтому по умолчанию эта функция отключена и пользователи учатся не использовать исключения в Arduino, а вместо этого использовать другой тип обработки ошибок.
По умолчанию также не используется STL., @DataFiddler
Это не просто значение по умолчанию; Arduino не имеет встроенной поддержки STL., @Snail Cadet
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Разница между print() и println()
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
Он просто отключен, и если вы хотите его использовать, вам нужно предоставить компилятору флаг -fExceptions., @KIIV
Отлично, спасибо за помощь!, @Snail Cadet