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.
Hans-Georg L. schrieb: > Gibt es schon einen Compiler der C++ Modules unterstützt ?. aktueller gcc: -std=c++20 -fmodules-ts
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.
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?
:
Bearbeitet durch User
Ich denke, er meint, dass der CPP Textersatz durchführt an Stellen, wo dies nicht gewünscht ist, weil CPP-Macros keinen Scope haben.
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.
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.