Задать вопрос
@vmklukva

С или С++ для микроконтроллеров. Почему С?

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

P. S. Вопрос чисто из любопытства.
  • Вопрос задан
  • 4767 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 5
@sitev_ru
sitev.ru - мой блог ...
В интернете нашёл только про то, что вес меньше.


это и есть ответ)
Ответ написан
Комментировать
CityCat4
@CityCat4 Куратор тега C
//COPY01 EXEC PGM=IEBGENER
1. скомпилите под любой контроллер hello world на С и на плюсах. Потом посмотрите на размер получившегося бинаря. Для контроллера размер бинаря имеет не просто значение, а решающее значение.
2. Итоговый (ассемблерный) код проще, выполняется быстрее, оверхед на абстракции меньше - программы для контроллеров очень часто пишут полупрограммисты-полужелезячники, которые мыслят в терминах железа и не нуждаются в уровне абстракции плюсов
Ответ написан
Комментировать
BacCM
@BacCM
C++ почти с рождения
Так исторически сложилось. Почти всё с чем имел дело имеют сносные компиляторы для C и с кучей недочетов для C++.

Получается на C++ в этой среде не сильно большой запрос, а потому толком не оптимизировано, каряво. Как следствие разработчики предпочитают C.

В последнем большом проекте под OMAP я выбрал C++ т.к. вроде бы хорошо поддерживается CCS от TI. Но по началу много услышал нелестного на эту тему от команды. Пока придумали как обойти все грабли, кучу времени убили.
Ответ написан
Комментировать
@Lmx2315
Возможно что на Си++ прошивка тормознее будет, опять же из-за объёма кода и большего числа операций с памятью. Так как в основном будут использоваться локальные переменные, а они компилятором хранятся в стеке, который придётся перезаписывать туда сюда кучу раз что занимает время.
Ответ написан
Комментировать
@Sh0ttky
Как на мой взгляд, си вообще лучше в принципе. Просто на микроконтроллерах это становится сильнее заметно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы