Можно ли использовать STL на Arduino Uno?

Я начал использовать Arduino Uno несколько дней назад. Я опытный разработчик C++, и я немного смущен.

Отличается ли компилятор Arduino от компилятора C++? Какую версию C++ использует Aruidno Uno? Почему он не поддерживает STL? Можно ли использовать STL?

Кроме того, могу ли я настроить их cpp-файл и использовать свою собственную основную функцию? Эта петля / настройка действительно раздражает меня. Спасибо!

, 👍0

Обсуждение

включите подробный вывод в разделе Настройки ... изучите полученную информацию в окне консоли, @jsotola

это arduino ide вещи? bcs im с использованием платформы io, @ZakiMkn


1 ответ


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

2

Да, существуют реализации STL для Arduino Uno (проверьте менеджер библиотек). Обратите внимание, что некоторые из них не поддерживаются и/или немного устарели. Недостатком использования STL на Arduino является также то, что эти классы могут использовать слишком много памяти. Из - за очень ограниченного объема памяти (всего 2 КБ) динамическое выделение памяти довольно рискованно, так как фрагментация памяти быстро приведет к сбою программы.

Система сборки Arduino использует шаг предварительной сборки вокруг файлов ino, который избавляет пользователя от многих проблем с поиском заголовочных файлов и настройкой путей сборки. Поначалу это немного сбивает с толку опытного программиста на C++, но это очень упрощает дело, особенно когда дело доходит до использования различных библиотек. Этот шаг сборки автоматически находит пути включения для всех файлов .h, на которые ссылаются в файле .ino. Система требует, чтобы вы объявили методы loop() и setup (), но то, что вы делаете с ними, зависит от вас. Вы можете оставить любой из них пустым или никогда не возвращаться из функции цикла, вызывая любую основную функцию, которую вы хотите использовать.

В качестве примечания: есть и другие функции компилятора C++, которые отключены или не поддерживаются в Uno, потому что они сделают код большим. К ним относятся динамическое приведение типов с использованием dynamic_cast<> и обработка исключений.

,

Спасибо! я погуглил отключенные функции компилятора и не нашел их, можете ли вы рассказать мне больше о них или это только динамическое приведение и исключения?, @ZakiMkn

Я нашел только об этом, но может быть и больше. Компилятор на самом деле является обычным GCC (хотя и немного старой версией) и поэтому поддерживает полный набор функций C++11, но в библиотеке времени выполнения отсутствуют некоторые части., @PMF