Обработка исключений с помощью Arduino IDE

Я использую порт STL, найденный здесь, и пытаюсь выполнить отладку с помощью простого try{ ...}catch{...} цикл. При компиляции с помощью Arduino IDE я получаю сообщение об ошибке

обработка исключений отключена, для включения используйте -fexceptions.

Я не совсем понимаю, что это значит. Может ли Arduino просто не поддерживать исключения? Или -fexceptions является флагом компилятора, который я могу включить?

, 👍3

Обсуждение

Он просто отключен, и если вы хотите его использовать, вам нужно предоставить компилятору флаг -fExceptions., @KIIV

Отлично, спасибо за помощь!, @Snail Cadet


2 ответа


Лучший ответ:

6

Как вы уже выяснили, добавьте -fexceptions к флагам компилятора. Это можно сделать, изменив platform.txt вашей установки Arduino IDE.

См. https://github.com/arduino/ArduinoCore-avr/blob/ мастер/платформа.txt#L28. Определено -fno-exceptions, поэтому его тоже нужно удалить.

,

Отлично, это (полный) ответ, который я искал., @Snail Cadet


1

Arduino — очень ограниченная платформа, и для обработки исключений требуется довольно много скрытого кода, чтобы правильно раскрутить стек, где бы ни возникло исключение.

Поэтому по умолчанию эта функция отключена и пользователи учатся не использовать исключения в Arduino, а вместо этого использовать другой тип обработки ошибок.

,

По умолчанию также не используется STL., @DataFiddler

Это не просто значение по умолчанию; Arduino не имеет встроенной поддержки STL., @Snail Cadet