Compiler: GCC 7.1 kennt die Sprachfeatures von C++17
[ad_1]
Die GNU Compiler Collection bietet in der neuen Hauptversion experimentellen Support für den aktuellen Draft von C++17. Außerdem gibt er erweiterte Hilfen bei potenziellen Tippfehlern in Feld- und Funktionsnamen sowie Makros und für enum-Typen.
Passend zum bevorstehenden 30. Jubiläum der GNU Compiler Collection erscheint die neue Hauptversion mit der Nummer 7.1. Zu den wesentlichen Neuerungen gehört ein überarbeitetes C++-Frontend, das nun den kompletten C++17-Draft unterstützt. Auch wenn der Sprachstandard noch nicht offiziell verabschiedet ist, gilt C++17 als technisch fertig, sodass der jetzige Stand dem endgültigen entsprechen dürfte.
Die GCC-Bibliothek libstdc++ unterstützt die C++17-Bibliotheken zwar noch nicht vollständig, aber laut der Ankündigung auf der Mailing-Liste zum großen Teil. Da der C++17-Support derzeit noch als experimentell gekennzeichnet ist, müssen Entwickler ihn explizit mit den Flags -std=c++1z beziehungsweise -std=gnu++1z aktivieren.
Verbesserte Warnung vor Flüchtigkeitsfehlern
Außerdem bietet der Compiler erweiterte Warnung vor Tipp- und Flüchtigkeitsfehlern und neue als “fix-it hints” bezeichnete Korrekturvorschläge. So unterstreicht er bei Feldnamen nicht nur den fehlerhaften, sondern schlägt eine passende Alternative vor. Außerdem erkennt GCC neuerdings mögliche Tippfehler in Funktionsnamen, wenn der Quellcode beispielsweise gtk_widget_showall statt gtk_widget_show_all enthält. Ähnliches gilt für Fehler in Makros und enum-Typen. Auch warnt der Compiler bei der Verwendung von Variablen, die ihren Scope verlassen haben.
Unter der Haube haben die Macher unter anderem die Optimizer verbessert. GCC kann zudem OpenMP-Code an Nvidia PTX (Parallel Thread Execution) auslagern. Weitere Details finden sich in der Ankündigung und den Release Notes. Da einige Änderungen potenziell zu Inkompatibilitäten führen können, gibt es eine Seite mit Hinweisen zur Portierung auf GCC 7.
GCC erscheint turnusmäßig im Frühjahr mit einem großen Versionssprung. Seit GCC 5 findet die Entwicklung der jeweils neueren Variante zwar mit einer “0” hinter der Hauptversion statt, das erste Release bekommt jedoch eine “1”.
Siehe dazu auf heise Developer:
- C++17: Kleinvieh macht auch Mist
- C++17: Neuzugänge in den Bibliotheken
(rme)
[ad_2]
Read more on: Source