Cortex M Compiler der C++ Modules unterstützt

OP #7386512
Lesenswert?
• ▲
▼

Ich verwende im Moment : gcc-arm-none-eabi-10-2020-q4-major.

Gibt es schon einen Compiler der C++ Modules unterstützt ?.

Hintergrund ist ich habe Header mit Templates, die evtl. CMSIS Files includen und möchte keine Konflikte mit den #defines haben. Mit Namespace funktioniert das nicht sollte aber mit Modules kein Problem sein und auch die compile Zeit verkürzen.

OP #7386561
Lesenswert?
• ▲
▼

Wilhelm M. schrieb:

Hans-Georg L. schrieb:

Gibt es schon einen Compiler der C++ Modules unterstützt ?.

aktueller gcc: -std=c++20 -fmodules-ts

Beim gcc habe ich gelesen das es da noch Probleme mit intern/extern Linkage geben soll. Ist das Geschichte oder noch aktuell ? Wenn das noch zu unausgereift ist lasse ich es lieber bleiben. Ich brauche ja nicht so viel von den CMSIS Headern und ein Programm zu schreiben das mir das aus den svd Files direkt zieht ist ja auch nicht die Welt. Einen Reader dafür habe ich mir ja schon geschrieben.

Mal sehen ob ich die 12er gcc Version native für Windows bekomme.

(Firma: Schweigstill IT) Persönliche Seite #7386670
Lesenswert?
• ▲
▼

Also meine gemischten Projekte (C, C++) lassen sich mit GCC 10 einwandfrei für STM32 kompilieren und funktionieren auch einwandfrei. Wichtig ist nur, dass C-Header durch C++-Quellen wie folgt inkludiert werden:

1
extern "C" {
2
  #include "mein_c_header.h"
3
}

Irgendwelche Probleme bei der Kompilierung gemischter Projekte sind nun wirklich uralter Schnee von gestern und nicht mehr aktuell. Oder geht es mal wieder nur darum, eine uralte Sichtweise aufrechtzuerhalten?

OP #7386709
Lesenswert?
• ▲
▼

Wilhelm M. schrieb:

Ich denke, er meint, dass der CPP Textersatz durchführt an Stellen, wo dies nicht gewünscht ist, weil CPP-Macros keinen Scope haben.

Richtig, der C-Präprozessor läuft vor dem Compiler, damit schleppst du dir alle Macros ein. Deshalb funktionieren auch Namespaces nicht, die kennt erst der Compiler. C++ Modules sind eine Art Erweiterung von Pre compiled Header und man kann gezielt nur das exportieren (sichtbar machen) was man möchte.
Ein Module durchläuft nicht mehr den Präprozessor.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.