Mark schrieb:
> womit erstellt ihr euren Code für den Mikrocontroller (ausser
> Assembler)? In C oder C++?
> Ich denke, C würde eigentlich reichen, wenn man jedoch externe Module
> anhängt (RFID, Funk, Bluetooth usw.) würde sich ja auch eigentlich C++
> anbieten.
> Würde gerne mal so ein paar vor-/Nachteile rausfinden. Habe selbst
> bisher nur in C programmiert, würde aber evtl. gerne zu C++ übergehen.
"C oder C++" ist eine Frage, die hier im Forum immer wieder heiß
diskutiert wird -- und ich bekenne, daß ich dabei der C++-Fraktion
angehöre.
Die Kurzfassung ist: viele C++-Features kann man auch auf
Mikrocontrollern sinnvoll nutzen. Sie machen den am Enge erzeugten Code
nicht oder höchstens unwesentlich größer, erlauben aber oft eine
wesentlich bessere Organisation des Code, verbessern dadurch die Les-
und Wartbarkeit und vermindern so die Entwicklungszeit. Diese Features
sind vor allem Datenkapselung, Vererbung, und Polymorphie. C++-Templates
lassen sich gewinnbringend nutzen, werden jedoch oft als alternativer
Mechanismus zur Parameterübergabe mißbraucht.
Andere C++-Features sind mit Vorsicht zu genießen, wieder andere machen
wenig bis keinen Sinn. Dazu gehören Exceptions, dynamisches Binden und
dynamische Speicherverwaltung, sowie der größte Teil der STL.
Drei wesentliche Punkte der Diskussionen sind erstens: ein C++-Programm
ist auch dann ein C++-Programm, wenn es nicht jedes einzelne Feature von
C++ ausnutzt. Und zweitens: wer C++ in limitierten Umgebungen benutzen
will, der sollte wissen, was der Compiler aus welchem Konstrukt macht,
und im Zweifelsfalle regelmäßig das Assemblerlisting überprüfen.
Drittens: es gibt leider bisher keine C++-Library für Mikrocontroller,
auf die sich die Commnuity einigen konnte; es gibt ein paar
vielversprechende Ansätze, aber noch keinen Konsens ob einer oder gar
welcher sich durchsetzen wird.
Wenn man diese Punkte beachtet und bereit ist, ein wenig Zeit ins Lernen
dieser Dinge zu investieren, dann kann man mit C++ auf Mikrocontrollern
viel Spaß haben und sauberen, wart- und erweiterbaren Code schreiben,
der nicht mehr Ressourcen als ein äquivalenter C-Code benötigt.
HTH, YMMV.