Gast
#180707
Hallo, weiß jemand ob man auch irgendwie die ATMELS mit WinAVR mit Klassen Programieren kann. Oder ist das soweit ich das verstanden habe reiner C Code
|
Anzeige
|
WinAVR und klassen im C++ Code
Gast
#180707
Hallo, weiß jemand ob man auch irgendwie die ATMELS mit WinAVR mit Klassen Programieren kann. Oder ist das soweit ich das verstanden habe reiner C Code
Gast
#180708
C++ kann man verwenden, allerdings nur zum Teil. Es gab hier schonmal eine Diskussion über das Thema, ich finde sie nur leider gerade nicht. :/ Kurzzusammenfassung: - Klassen funktionieren. - new/delete funktionieren, wenn man sie selbst auf malloc/free weiterleitet. - Vererbung funktioniert (Mehrfachvererbung und virtuelle Basisklasse hab ich nicht getestet). - Virtuelle Methoden funktionieren (großer Pluspunkt). - Rein virtuelle Methoden funktionieren (fehlt nur ein Symbol, die Fehlermeldung sagt welches). - Templates funktionieren (soweit ich weiß). - Konstruktion von globalen bzw. statischen C++-Objekten funktioniert (soweit ich weiß, bin mir in dem Punkt gerade nicht sicher). - Methodenzeiger müssten eigentlich funktionieren, habs aber nicht getestet. - Referenzen funktionieren leider nicht so gut (der Compiler hat da AFAIK Probleme mit dem alignment), führen noch oft zu Compiler-Fehlern. - STL funktioniert praktisch nicht (kannst es mit STLport ausprobieren, z.T. funktioniert's). Fakt ist, dass es noch keine avr-libc++ gibt. Die ganzen C++-Standardfunktionen hast du also nicht zur Verfügung. Es gibt zum Beispiel kein <cstdlib>, nur die C-Version <stdlib.h>. Ich würde dir raten STLport[1] zu installieren und es damit zu versuchen (ich kann aber nicht garantieren, dass der Rat sinnvoll ist). STLport kannst du ziemlich fein anpassen, sodass einige Teile mit avr-gcc zusammenspielen sollten. HTH, Chris [1] http://www.stlport.org/download.html
Gast
#180709
Nachtrag: Wenn du nur objekt-orientiert programmieren willst, aber ohne STL, brauchst du STLport natürlich nicht installieren.
Gast
#180710
Hi, ich habe folgenden Code mit WinAVR probiert class Test { public: void methode(){ ..... } private: }; der Compiler konnte aber damit nichts anfangen. Im Visual Studio geht das einwandfrei.
Gast
#180711
Hi Dateiname? Der GCC erkennt anhand des Suffix um welche Sprache es sich handelt. Bei *.c nimmt er den C-Compiler und der kann bekantlich mit C++ Klassen nichts anfangen. Verwende deshalb *.C, *.cc, *.cpp, *.c++, *.cp oder *.cxx oder gib die Sprache mit -x direkt an. Matthias
Gast
#180712
@Jens: Mein WinAvr kann! Gruß, Michael
Gast
#180713
Vielen dank es funktioniert!!! Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|