Я всегда был инженером встроенного программного обеспечения, но обычно на уровне 3 или 2 стека OSI. Я на самом деле не парень. Я вообще всегда делал телекоммуникационные продукты, обычно ручные/сотовые телефоны, что обычно означает нечто вроде процессора ARM 7.
Теперь я нахожусь в более общем встроенном мире, в небольшом запуске, где я могу перейти к "не очень мощным" процессорам (там есть субъективный бит) - я не могу предсказать, какой из них.
Я довольно много читал о спорах об использовании STL в С++ во встроенных системах, и нет четкого ответа. Есть некоторые небольшие заботы о переносимости, а некоторые о размере кода или времени выполнения, но у меня есть две основные проблемы:
1 - обработка исключений; Я все еще не уверен, использовать ли его (см. Embedded С++: использовать исключения или нет?)
2 - Я сильно не люблю динамическое распределение памяти во встроенных системах, из-за проблем, которые он может ввести. Обычно у меня есть буферный пул, который статически выделяется во время компиляции и который обслуживает только буферы фиксированного размера (если нет буферов, система reset). STL, конечно же, делает много динамического выделения.
Теперь я должен принять решение о том, следует ли использовать или отказаться от STL - для всей компании навсегда (она входит в некоторые очень сильные s/w).
С какого пути я прыгаю? Супер-безопасно и потеряет большую часть того, что составляет С++ (imo, это больше, чем просто определение языка) и, возможно, столкнуться с проблемами позже или нужно добавить много обработки исключений и, возможно, какой-нибудь другой код сейчас?
У меня возникает соблазн просто пойти с Boost, но 1) Я не уверен, будет ли он переноситься на каждый встроенный процессор я возможно, захотят использовать и 2) на своем веб-сайте, они говорят, что они не гарантируют/не рекомендуют некоторые его части для встроенных систем (особенно FSM, что кажется странным). Если я пойду на Boost, и мы найдем проблему позже.