Nabend, 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. Mark
:
Gesperrt durch Admin
C++ ist, wenn man den gesamten Sprachumfang betrachtet, erheblich schwerer zu erlernen und zu meistern als C. Erheblich. Auf Mikrocontrollern, zumindest wenn es kleinere sind, nutzt man freilich oftmals nicht den gesamten Sprachumfang. Wenn Du C++ lernen willst dann kannst Du das auch an Deinem PC tun.
Hi, Damit demmelst du wohl voll ins Wespennest hier :D. Solche Sprachkriege sind so alt wie der Programmierer selbst :-P. Ich nutze im Moment für eigene Sachen nur noch C++ auf ARM-Controllern. Ohne weitere Wertung des Themas, schau dir das mal an: http://htrd.su/wiki/_media/zhurnal/2013/03/28/scott_meyers._effective_c_in_an_embedded_environment/effectcppemb.pdf Grüße, test
Die Frage, ob man C oder C++ auf µC nutzen soll, ist eigentlich ganz einfach zu beantworten. Du beherrscht einigermaßen C++ und kannst es auch gewinnbringend auf einem µC nutzen, d.h. du weißt, welche Sprachfeatures auf µC sinnvoll sind und keinen bzw. fast keinen Overhead erzeugen? Selbstverständlich musst du nicht alle Features von C++ kennen, sondern nur so viele, dass du aus C++ einen signifikanten Vorteil gegenüber C herausziehen kannst. -> Verwende C++ Ansonsten: -> Verwende C
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.
Christopher C. schrieb: > Du beherrscht einigermaßen C++ und kannst es auch gewinnbringend auf > einem µC nutzen, d.h. du weißt, welche Sprachfeatures auf µC sinnvoll > sind und keinen bzw. fast keinen Overhead erzeugen? Korrektur, müsste heißen: Du beherrscht einigermaßen C++ und kannst es auch gewinnbringend auf > einem µC nutzen, d.h. du weißt, welche Sprachfeatures auf µC sinnvoll > sind und wie viel Overhead erzeugen?
Dieses Thema wurde schon sehr oft diskutiert, z.B. erst vor kurzem hier: Beitrag "Mikrocontroller in C++ oder C Programieren" Beitrag "AVR und C++ - ein Versuch"