Добрый день!
Я, так скажем, начинаю программировать ARM микроконтроллеры (STM32, Миландр). Уже в течение года использую язык С++, среды EmBitz и CodeMaster-ARM. Проблем никаких нет. Но вот недавно обратил внимание что большая часть кода (на самом деле вообще не встречал файлов с расширением *.cpp) под эти камни написана на С. Соответственно задался вопросом - почему? В интернете нашёл только про то, что вес меньше. Есть ли ещё какие либо преимущества у С перед С++?
1. скомпилите под любой контроллер hello world на С и на плюсах. Потом посмотрите на размер получившегося бинаря. Для контроллера размер бинаря имеет не просто значение, а решающее значение.
2. Итоговый (ассемблерный) код проще, выполняется быстрее, оверхед на абстракции меньше - программы для контроллеров очень часто пишут полупрограммисты-полужелезячники, которые мыслят в терминах железа и не нуждаются в уровне абстракции плюсов
Так исторически сложилось. Почти всё с чем имел дело имеют сносные компиляторы для C и с кучей недочетов для C++.
Получается на C++ в этой среде не сильно большой запрос, а потому толком не оптимизировано, каряво. Как следствие разработчики предпочитают C.
В последнем большом проекте под OMAP я выбрал C++ т.к. вроде бы хорошо поддерживается CCS от TI. Но по началу много услышал нелестного на эту тему от команды. Пока придумали как обойти все грабли, кучу времени убили.
Возможно что на Си++ прошивка тормознее будет, опять же из-за объёма кода и большего числа операций с памятью. Так как в основном будут использоваться локальные переменные, а они компилятором хранятся в стеке, который придётся перезаписывать туда сюда кучу раз что занимает время.