Упс. Ну, ок. Не будет работать new/delete (рантайм выкинули - никакого менеджера памяти, равно как и никаких malloc/free), не будет исключений и rtti. Все остальное - будет.
Как на встроенные системы "пересел", не припомню, что бы хоть раз malloc/free использовал...
Даже если попадается что-то переделывать из чьих-то готовых исходников изгоняю эту дьявольщину, переделывая структуры и алгоритмы! Чтение про ядро Миникс3 у Таненбаума и сами ея исходники - очень пользительны в плане корректировки мировозрения и оценок, что к чему в реальности и при жёстких ограничениях.
"Всё остальное" - это просто "несколько иной" компилятор на уровне конструкций и типов.
Хотя, "объектоподобность" я могу и "вручную" на Си(без крестов) организовывать и получается по затратам на память всё равно меньше. Вместо поддержки таблиц виртуальных функций больше подходит подход из первого Оберона с указателями на функции. Но чаще Обходишься чем-то вроде Queue_Add( TQueue* this, void* pItem ) и void* Queue_Get( TQueue* this )
Сами же, например, буферы, помещаемые и удаляемые из очереди - элементы массива буферов
uint8_t buffers[N][BUFFER_SIZE];
uint8_t* freeBuffers[N];
uint8_t* buffersToTX[N];
uint8_t* RXedBuffer, *TXedBuffer;
и т.д.
А это другим, для расширения кругозора :-) Я просто пишу под вот это все, и, так сказать, делюсь опытом. Кстати, привычки которые приобретаешь при программировании под смартфоны современные позволяют существенно лучше писать проги под ноуты - это здорово когда приложение не сжирает батарейку за полчаса.
Ну, у меня в изделиях проблем с энергией нет. Хотя потребление стараемся минимизировать. Больше стараемся скорострельность выжать при минимизации самой тактовой. Плюс температурный диапазон и вибро- и удароустойчивость. Ну и что бы "свистело" потише по цепям питания...