C11: Neue Version des Sprachstandards, Teil 2

Seite 4: Fazit

Inhaltsverzeichnis

Da viele Teile des neuen Standards optional sind, werden Compilerhersteller den Support je nach Anwendungsgebiet nachrüsten. Compiler mit Fokus auf wissenschaftlichen Berechnungen werden eher einen vollständigen Support für komplexe Datentypen implementieren als etwa Unicode-Unterstützung.

Microsofts Compiler-Suite Visual Studio ist dafür bekannt, den C-Support im Vergleich zu C++ oder gar C# stiefmütterlich zu behandeln. Das mag an der Zielgruppe liegen und daran, dass Microsoft auf dem Embedded-Markt nicht stark vertreten ist. Zudem hat es eine halbe Ewigkeit gedauert, bis Visual Studio eine kleine Teilmenge von C99 überhaupt unterstützt hat. Aktuelle Äußerungen von Herb Sutter, Vorsitzender des ISO-C++-Standardisierungskomitees und Softwarearchitekt bei Microsoft, zielen eher darauf, C++ schmackhaft zu machen als Neuerungen in C einzupflegen. Zu optimistisch sollte man also nicht sein.

GCC implementiert C99 mittlerweile fast vollständig. Auch eine kleine Teilmenge von C11 wird bereits abgedeckt. Sie lässt sich mit --std=c11 oder bei älteren Compilern mit --std=c1x aktivieren. Andere Konstrukte sind die Aufgabe der Standardbibliothek. Wie schnell und ob die Entwicklergruppe um Roland McGrath und Ulrich Drepper das im Annex K beschriebene Bounds Checking Interface bereitstellt, ist offen. Auch die neue Community-getriebene Entwicklung von glibc wird daran nicht viel ändern.

Der neue Stern am Compiler-Himmel, LLVM, wird sobald wie möglich nachziehen. Die gewollte Kompatibilität zu GCC, die bis auf wenige Konstrukte den kompletten Syntaxsatz von GCC unterstützt, scheint Anreiz genug. Für Compiler ist es oft entscheidender, kompatibel zu GCC zu sein als zum eigentlichen Standard. Das trifft übrigens auch auf ICC zu, Intels Compiler.

Hagen Paul Pfeifer
berät als Selbstständiger Firmen bei Konzeption und Umsetzung rund um das Thema Netzwerke und Netzwerkprotokolle. Er ist aktives Mitglied der IETF und Linux-Kernelprogrammierer.
(ane)