Это не очень простой вопрос для ответа. Это зависит от ряда факторов, в том числе:
- Как вы предпочитаете размещать код.
- Имеется ли для вашей цели компилятор C ++ (и любые другие цели, на которых вы можете использовать загрузчик).
- Насколько критичен размер кода для вашего приложения (возможно, речь идет о дополнительных 10%, а не мегабайтах, как предполагает другой ответ).
Лично мне очень нравятся классы как способ выкладывания моего кода. Даже когда я пишу код на языке C, я склонен хранить все в модульных файлах со статическими функциями области файлов, «имитирующими» функции-члены и (несколько) статических переменных области файлов, чтобы «имитировать» переменные-члены. Сказав это, большинство моих существующих встроенных проектов (все они относительно небольшого масштаба, до 128 КБ флэш-памяти, включая загрузчик, но обычно меньше), как правило, написаны на C. Теперь, когда у меня есть компилятор C ++, Я определенно думаю о переходе на C ++.
Существуют значительные преимущества для C ++ от простого использования ссылок, перегрузки и шаблонов, даже если вы не заходите так далеко, как классы. Конечно, я бы не стал использовать множество более продвинутых функций, включая использование динамического выделения памяти (новое). Опять же, я бы по возможности избегал динамического выделения памяти (malloc и т. Д.) Во встроенном Си.
Если у вас есть компилятор C ++ (даже если он только g ++), стоит выполнить код через него только для дополнительной проверки типов, чтобы вы могли уменьшить количество проблем в вашем коде. Компилятор C ++ может уловить несколько вещей, которые даже инструменты статического анализа не заметят.
Хорошее обсуждение многих недопустимых причин, по которым люди отвергают C ++, см. Статья Дэна Сакса на Embedded.com .