--- Оновлення 170412
Я написав свою оригінальну відповідь три роки тому з точки зору існуючого чіткого "Arduino C ++". Мова, що використовується в IDE, є стандартною C ++, оскільки вона реалізована компілятором GNU C ++. "Очевидні" відмінності повстають, оскільки IDE зробить деяку попередню обробку, щоб допомогти новачкам мови уникнути пари 'gotcha', заповнивши деякі #includes, f / ex. Але ви можете - і я це - написати правильний C ++ до нього і отримати саме те, що ви очікуєте отримати.
--- завершення оновлення
Обмежте використання мовних функцій C ++ тими, чию реалізацію ви повністю розумієте. Є деякі функції, які компілюються до більш ресурсомісткого коду, ніж це очевидно з читання вихідного коду. Факультативно генерований .lss (об'єднаний джерело та збірка) перелік може дати вам гарне уявлення про те, що робив компілятор C ++, коли ви не шукали.
На ваше запитання щодо пам'яті: C ++ не збирає сміття. Мови на основі стека, такі як C і C ++, виділяють тимчасове сховище в стеку для автоматичних змінних при введенні функції, яке потім вивільняється, коли функція повертається, але це не є справжнім збиранням сміття. Об'єкти, створені в купі або глобальній пам'яті, живуть, поки ви явно не видалите їх. Переконайтеся, що ви знаєте, де, коли і протягом якого часу будуть створюватися різні види об’єктів. Ви дійсно не хочете, щоб ваші кодування new
та delete
-ing об'єкти були вольово-невільно. Вони будуть вбудовані в купу пам’яті, фрагментуючи її і змушуючи перерости в стек. Ось тоді ваш код - і ваш приємний «вертоліт» - збій.
C робить менше для вас , так що він може зробити менше для вас. Це не поганий вибір. C з кількома функціями C ++ може стати ще кращим вибором, якщо ви вибираєте додаткові функції з розумом.C ++, якщо це два варіанти:
[Оригінальна відповідь] - C ++ - це стандартизована мова. Він широко розгорнутий у багатьох середовищах, включаючи вбудовані системи, і тому є більш ретельним тестуванням, ніж мова, схожа на C ++, що є "Arduino". Це особливо важливо для критично важливих місій / безпечних програм, таких як ви плануєте. Розбився код означає , що розбився «вертоліт і навіть якщо це не зашкодить кому - то, він буде розбити дорогу машину.
Будучи стандартним, C ++ є портативним. Потрібно оновити процесор? Все, окрім специфічного для кремнію коду, буде портовим до нового. Потрібно змінити набір інструментів, систему розробки, хост ОС? C ++ буде підтримуватися всюди. Хоча Arduino IDE працюватиме де завгодно, де підтримується Java, це єдиний інструмент, який використовує Arduino C ++, і це дуже обмежений інструмент. Якщо ви хочете використовувати Eclipse, засоби AVR, переходити босоніж в командному рядку, розроблятись в Emacs або будь-якому іншому середовищі, яке ви віддаєте перевагу, стандарт C ++ буде підтримуватися.
Arduino IDE робить все за вашою спиною - зокрема, він #include .h файли, коли він вважає, що вам потрібні. Навіть якщо це правильно, ви дуже хочете написати або принаймні побачити і зрозуміти все, що збирається бачити компілятор. Мови програмування не створені для комп’ютерів (комп'ютери їдять шматочки на сніданок); вони створені для людей, зокрема для людей, які стежать за вами у проекті, найважливішим з яких може бути ... ти! швидше за все, виправте. Вам дуже хочеться бачити все, що бачить компілятор.