AF: embedded C++
W[] – Worauf muss man bei Embedded-Anwendungen achten?
“embedded ” heißt nur „Teil eines größeren Geräts“.
Es gibt kleine Systeme, wie etwa microcontroller, die teilweise kein Betriebsystem haben, nur wenig Speicher haben und langsam sind.
Hier ist eventuell C zu bevorzugen (keine Exceptions, Streams). Andererseits gibt es Fälle, in denen C++ schneller ist als C (z.B. sort).
Da exceptions und den Code vergrößern, sollten sie vermieden werden.
Umstritten ist dynamische Speicheranforderung, jedenfalls ist dynamische Speicherfreigabe und Wiederverwendung schwierig und wird oft vermieden.
Auch virtuelle Klassen und templates können Code vergrößern.
iostreams vergrößern Programm, müssen aber nicht verwendet werden
RTTI, dynamic_cast und die Behälterbibliothek können zu viel Speicherplatz beanspruchen und zu langsam sein. Außerdem unterstützt die Behälterbibliothek Speicherausrichtung schlecht.
Was zur Laufzeit Belastungen erzeugen kann:
- temporäre Objekte
- Templates (vergrößern das Programm unter Umständen, können es aber auch verkleinern)
Addresse (Beispiel): reinterpret_cast<void*>( 0xFFFF00D2 )
C-ABI-callbacks (Beispiel): extern "C" void f2( int );
Verhindern von Ausnahmewürfen in C-Rahmen mit catch