--- Обновление 170412
Я написал свой оригинальный ответ три года назад с точки зрения существования отдельного "Arduino C ++". Язык, используемый в IDE, является стандартным C ++, потому что он реализован компилятором GNU C ++. Появляются «очевидные» различия, потому что IDE выполнит некоторую предварительную обработку, чтобы помочь новичкам в изучении языка избежать пары «уловок», заполнив несколько #include, f / ex. Но вы можете - и я делаю - написать правильный C ++ и получить именно то, что вы ожидаете получить.
--- конец обновления
Ограничьте использование возможностей языка C ++ теми, чью реализацию вы полностью понимаете. Есть некоторые функции, которые компилируются в более ресурсоемкий код, чем очевидно из чтения исходного кода. Опционально сгенерированный листинг .lss (объединенный источник и сборка) может дать вам хорошее представление о том, что делал компилятор C ++, когда вы не искали.
К вашему вопросу о памяти: C ++ не сборщик мусора. Основанные на стеке языки, такие как C и C ++, выделяют временное хранилище в стеке для автоматических переменных при входе в функцию, которое затем освобождается при возврате функции, но это не настоящая сборка мусора. Объекты, созданные в куче или глобальной памяти, живут до тех пор, пока вы их явно не удалите. Убедитесь, что вы знаете, где, когда и как долго будут создаваться различные типы объектов. Вы действительно не хотите, чтобы ваши объекты кода- new
и- delete
воли были волей-неволей. Они будут встроены в кучную память, фрагментируя ее и заставляя ее расти в стеке. Вот когда ваш код - и ваш хороший коптер - потерпит крах.
C делает меньше для вас, поэтому он может сделать меньше для вас. Это не плохой выбор. C с несколькими функциями C ++ может быть еще лучшим выбором, если вы выбираете дополнительные функции разумно. C ++, если это ваш выбор:
[Оригинальный ответ] - C ++ является стандартизированным языком. Он широко развернут во многих средах, включая встроенные системы, и, следовательно, более тщательно протестирован, чем язык "очень похож на C ++", который называется "Arduino". Это особенно важно для критически важных / безопасных приложений, таких как вы планируете. Разбился код означает , что разбившийся «вертолет и даже если это не повредит кому - то, он будет разбить дорогую машину.
Стандарт C ++ является переносимым. Нужно обновить свой процессор? Все, кроме кремниевого кода, будет портировать на новый. Нужно изменить свой набор инструментов, систему разработки, хост-ОС? C ++ будет поддерживаться везде. Хотя Arduino IDE будет работать везде, где поддерживается Java, это единственный инструмент, который использует Arduino C ++, и это очень ограниченный инструмент. Если вы хотите использовать Eclipse, инструменты AVR, ходить босиком по командной строке, разрабатывать в Emacs или в любой другой среде, которую вы предпочитаете, будет поддерживаться стандарт C ++.
Arduino IDE работает за вашей спиной - в частности, он включает .h файлы, когда считает, что они вам нужны. Даже если это правильно, вы действительно хотите написать или, по крайней мере, увидеть и понять все, что увидит компилятор. Языки программирования не предназначены для компьютеров (компьютеры едят кусочки на завтрак); они созданы для людей, особенно для тех, кто следит за вами в проекте, наиболее важными из которых могут быть ... вы !, когда через 6 месяцев после написания модуля вы должны вернуться, чтобы улучшить его, или еще скорее всего, почините. Вы действительно хотите видеть все, что видит компилятор.