Me preguntaba un cliente recientemente sobre las ventajas de C++ sobre C para un proyecto de software embebido, y estas son algunas de las ideas que surgieron:
C muestra una relación más estrecha entre la fuente y el código máquina, que a veces hace que la depuración y optimización del código sea más fácil. Algunas arquitecturas tienen mejor soporte del compilador C, aunque esto es cierto principalmente para algunos DSP no muy comunes. En algunos casos, C también puede proporcionar un uso más eficiente de memoria y un tiempo de ejecución reducido en comparación con C++.
Por otro lado, C++ proporciona muchas facilidades a través de la STL que no forman parte de la biblioteca estándar C. C++ facilita el encapsulamiento y la orientación a objetos en los casos en que podrían ser útiles. Además de esto, las excepciones C++ simplifican el manejo de errores sin el código de comprobación de errores que frecuentemente se propaga a través de un programa de C.No creo que otras características de C++, como los templates y RTTI son tan útiles en los sistemas embebidos. Si tu compilador te permite desactivarlas por completo, te aconsejo que lo hagas con el fin de ahorrar en tamaño de código.
El uso de C++ es recomendable si sus características tienen sentido en tu producto, después de una evaluación cuidadosa de los beneficios que proporciona en contra de su coste en rendimiento y tamaño de código.