www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR und C++ möglich?


Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann man einen ATMEL Controller auch mit C++ ansprechen bzw gibts es 
compiller die aus C++ dann die hex Datei erzeugen?

Autor: Lothar Sammel (magic33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guckst du GCC links

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, macht aber keinen Sinn.

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven Pauli wrote:
> Ja, macht aber keinen Sinn.

wieso?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil der GCC kein C++ Compiler ist.

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, macht aber keinen Sinn.

Doch, macht Unsinn ;-)

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil die wesentlichen Vorzüge von C++ ggü. C zuviel Overhead für einen 
kleinen Prozessor mit wenig RAM mitbringen.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. wrote:
> Weil der GCC kein C++ Compiler ist.

Der GCC ist überhaupt kein Compiler...

Autor: Michael Stather (kyromaster)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob das Sinn macht muss jeder IMHO selbst beurteilen.
Du kannst die "Sprache" C++ an sich verwenden, nur die 
Standardbibliothek von C++ eher nicht.
Aber die Vorteile von C++ an sich, also z.B. Objektorientierung, kann 
man auch auf einem AVR nutzen.

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gehn wir doch mal zum Anfang der Frage..es geht
AVR Studio / WIN AVR

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven Pauli wrote:
> Simon K. wrote:
>> Weil der GCC kein C++ Compiler ist.
>
> Der GCC ist überhaupt kein Compiler...

Stimmt. Genau genommen ist "das Gleiche" auch nicht das gleiche wie "das 
Selbe", trotzdem wirds durcheinander geworfen. Macht aber hier jetzt 
auch keinen Unterschied.
Nicht genau genommen steht sogar in der mikrocontroller.net-Wiki:
> AVR-GCC ist ein kostenloser C-Cross-Compiler für AVR-Mikrocontroller.

Jedenfalls beinhaltet die AVR-GCC kein C++ Compiler-Frontend.
EDIT: Das stimmt natürlich nicht. AVR-GCC enthält ein C++ Frontend.

Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also lieber C nehmen... Schade

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natuerlich ergibt das einen Sinn - abhaengig vom zu loesenden Problem. 
Man muss nur ein paar Dinge beachten:

Da auch bei grossen AVR sehr wenig Speicher und keine MMU vorhanden ist, 
sollte man auf dynamische Speicherverwaltung verzichten. Das ist aber 
unabhaengig davon, ob man C oder C++ verwendet. Ehrlich gesagt weiss ich 
gar nicht, ob new & delete mit dem avr-gcc funktionieren, da ich es nie 
versucht habe.

Virtuelle Methoden funktionieren nicht. Zumindest mit dem avr-gcc 4.1.2 
den ich hier habe. Das schraenkt natuerlich mitunter ein wenig ein, da 
Funktionspointer doch deutlich aufwendiger zu handhaben sind.

Tatsaechlich fuehrt objektorientierte Programmierung (egal ob in C oder 
C++) schnell zu groesserem Code. Das liegt aber nicht daran, dass der 
Compiler ploetzlich irgendwelchen Zusatzcode produziert, sondern 
schlicht am anderen Stil. Im Allgemeinen bekommt man fuer Abstraktion 
und strikte Trennung von Komponenten aber auch etwas: Bessere 
Wartbarkeit.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu der Sinnfrage von C++ gab es übrigens schon teilweise große 
Diskussionen in dem GCC Forum. Such einfach mal.

Das Ganze endete darin, dass C++ nette Features bietet, die man benutzen 
könnte (Automatische Smart Pointer ins Flash/RAM usw.). Aber hier hat 
bisher noch niemand was eingereicht für die AVR-GCC Maintainer, was man 
dem nächsten Release beipacken könnte.

Übrigens muss C++ nicht notwendigerweise mehr Overhead als Plain-C 
haben. Aber wie gesagt, das hatten wir alles schon öfters hier.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Stegemann wrote:
> Da auch bei grossen AVR sehr wenig Speicher und keine MMU vorhanden ist,
> sollte man auf dynamische Speicherverwaltung verzichten. Das ist aber
> unabhaengig davon, ob man C oder C++ verwendet. Ehrlich gesagt weiss ich
> gar nicht, ob new & delete mit dem avr-gcc funktionieren, da ich es nie
> versucht habe.
Genau. new und delete sind standardmäßig nicht vorhanden, wenn ich mich 
recht erinnere.

> Tatsaechlich fuehrt objektorientierte Programmierung (egal ob in C oder
> C++) schnell zu groesserem Code. Das liegt aber nicht daran, dass der
> Compiler ploetzlich irgendwelchen Zusatzcode produziert, sondern
> schlicht am anderen Stil. Im Allgemeinen bekommt man fuer Abstraktion
> und strikte Trennung von Komponenten aber auch etwas: Bessere
> Wartbarkeit.

Ja, das mag gut sein. Aber man muss nicht unbedingt objektorientiert 
programmieren, wenn man C++ benutzt. Man kann auch einfach die 
Zusatz-Features benutzen gegenüber C. Nur, dass das klar ist.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. wrote:

> Ja, das mag gut sein. Aber man muss nicht unbedingt objektorientiert
> programmieren, wenn man C++ benutzt. Man kann auch einfach die
> Zusatz-Features benutzen gegenüber C. Nur, dass das klar ist.

Voellig richtig.

Und auch andersrum: Man kann auch in C objektorientiert programmieren 
(und in Java funktional, etc,..).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.