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
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
Nachtrag: Wenn du nur objekt-orientiert programmieren willst, aber ohne STL, brauchst du STLport natürlich nicht installieren.
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.