Forum: Compiler & IDEs Interessanter C++ Artikel


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Bewertung
6 lesenswert
nicht lesenswert
Für die C++ Interessierten unter uns (C++ bei Flugge):
http://bitbashing.io/embedded-cpp.html

mfg Torsten

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Ich finde den Artikel gut ... wenn auch nicht super neue Erkenntnisse.

Allerdings vermisse ich die Entrüstungsstürme über C++ ;-)

Stimmt, ist ja noch nicht Freitag!

von Nop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wie jetzt - die arbeiten mit GCC 6 für Cortex M4 im Firmenkontext? Der 
ist gerade erst im Dezember rausgekommen und hat noch nichtmal sein 
erstes Update bekommen, das ist erst gegen Ende dieses Quartals der 
Fall. Das ist.. mutig. Ich warte mit dem Update von 5.4 lieber noch bis 
6/Q1.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Nop schrieb:
> Wie jetzt - die arbeiten mit GCC 6 für Cortex M4 im Firmenkontext? Der
> ist gerade erst im Dezember rausgekommen und hat noch nichtmal sein
> erstes Update bekommen, das ist erst gegen Ende dieses Quartals der
> Fall. Das ist.. mutig. Ich warte mit dem Update von 5.4 lieber noch bis
> 6/Q1.

Du meinst 6.3 ?

M.E: kannst Du ruhig gleich auf 7.0.x gehen.

Aber 6.3. reicht ja schon für concepts ... und das ist ja wieder für 
embedded sehr geeignet!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
3 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Allerdings vermisse ich die Entrüstungsstürme über C++ ;-)

Es gibt vermutlich zwei Sorten von Leuten: die, die sich über allerlei
Unzulänglichkeiten von C++ beschweren und argumentieren, warum man das
insbesondere im Embedded-Bereich überhaupt nicht verwenden kann –
und die, die es einfach benutzen. :-)

von Wilhelm M. (wimalopaan)


Bewertung
-3 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Wilhelm M. schrieb:
>> Allerdings vermisse ich die Entrüstungsstürme über C++ ;-)
>
> Es gibt vermutlich zwei Sorten von Leuten: die, die sich über allerlei
> Unzulänglichkeiten von C++ beschweren und argumentieren, warum man das
> insbesondere im Embedded-Bereich überhaupt nicht verwenden kann
> und die, die es einfach benutzen. :-)

Wohl wahr: obwohl es mir zugegebenermaßen oft in den Finger juckt, den 
Spieß umzudrehen ...

von Nop (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Merkwürdig finde ich ja deren Stack Canary. Der steht NACH dem 
char-Array, aber M4 hat einen descending stack. Selbst wenn der Compiler 
(was nicht garantiert ist!) die Stackvariablen in der Reihenfolge legt, 
in der sie deklariert werden, steht der Stack Canary physikalisch an 
einer niedrigeren Adresse als das char-Array.

Mit anderen Worten: Wenn man char_array[-1] beschreibt, bemerkt der 
Kanarienvogel das wohl, aber üblicher ist doch, daß man über das Ende 
hinausschreibt, also char_array[10] überschreibt. Der Kanarienvogel 
müßte also VOR dem Array deklariert werden.

Das hat nichtmal was mit C++ zu tun, aber ob das so die beste Idee ist, 
einem Team auch noch C++ zu geben, was schon mit hardwarenahem C seine 
Probleme hat, sei dahingestellt.

von Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Der stack canary  kommt vom Compiler, die lange Version von bar() ist 
eine besispielhafte Erklärung dafür, was der Compiler tut. Man darf 
davon ausgehen, dass der Compiler weiß, wie der Stack funktioniert, und 
so schlau ist, den Vogel an die richtige Position zu setzen.

Das hat nichtmal was mit C zu tun, aber ob es sinnvoll ist, Artikel zu 
kommentieren, wenn man mit dem Lesen englischer Texte schon solche 
Probleme hat, sei dahingestellt.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Ausserdem sollte man rohe statische Arrays in C++ nicht mehr verwenden. 
In einem std::array<> o.d.gl. könnte man mit Zusicherungen arbeiten ...

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Bewertung
2 lesenswert
nicht lesenswert
Tom schrieb:

> Das hat nichtmal was mit C zu tun, aber ob es sinnvoll ist, Artikel zu
> kommentieren, wenn man mit dem Lesen englischer Texte schon solche
> Probleme hat, sei dahingestellt.

Und so ganz ohne Rumpöbeln geht es einfach nicht, oder? Wenn NOP ein 
Verständnis-Problem hat, dann hilf ihm doch einfach!

von Nop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tom schrieb:

> eine besispielhafte Erklärung dafür

Kay, das hatte ich zu wörtlich genommen.

Eine andere Frage: wie ist denn das eigentlich mit diesem Mechanismus, 
der ist dann ja nicht mehr "in C(++)", sondern in irgendeiner 
Compiler-internen Zwischendarstellung, oder? Die Frage geht dahin, wie 
das mit Aliasing wäre, wenn das Array nicht gerade char wäre.

von Nop (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:

> Du meinst 6.3 ?

Naja ich meinte, daß das GCC-Binary für arm-eabi-none ja erst Ende 
Dezember zum Download auf die ARM-Webseite gestellt wurde. Klar steht da 
eine schon deutlich längere Historie des 6er dahinter, aber der breite 
Feldtest spezifisch für embedded wäre ja der praktische Masseneinsatz, 
oder nicht?

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Nop schrieb:
> Wilhelm M. schrieb:
>
>> Du meinst 6.3 ?
>
> Naja ich meinte, daß das GCC-Binary für arm-eabi-none ja erst Ende
> Dezember zum Download auf die ARM-Webseite gestellt wurde. Klar steht da
> eine schon deutlich längere Historie des 6er dahinter, aber der breite
> Feldtest spezifisch für embedded wäre ja der praktische Masseneinsatz,
> oder nicht?

Aber ARM gehört doch zu den primären/sekundären Zielplattformen und wird 
daher immer unterstützt. Natürlich: je länger abgehangen, desto besser. 
Man muss halt immer einen gangbaren Kompromiss finden. Aber gerade bei 
g++-7 haben wir ja z.B. constexpr-lambdas bekommen, was wieder eine ganz 
tolle Sache ist.

von Nop (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Torsten R. schrieb:

> Und so ganz ohne Rumpöbeln geht es einfach nicht, oder? Wenn NOP ein
> Verständnis-Problem hat, dann hilf ihm doch einfach!

Nee, da muß ich Tom in Schutz nehmen (sofern erlaubt); ich habe damit 
angefangen, aber das nichtmal kompetent, und insofern war die Retoure 
völlig angemessen.

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]
  • [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.