T. Kelly, Borer Yekai Pan 10.04.2023, 07:43 Uhr

Licht- und Schattenseiten von C23

In diesem Jahr soll eine neue grosse Überarbeitung des C-Sprachstandards, C23, erscheinen. Terence Kelly und Borer Yekai Pan gehen den Änderungen auf den Grund.
(Quelle: queue.acm.org)
Wie die letzte grosse Revision, C 11 führt auch der neueste Standard mehrere nützliche Funktionen ein. Die wichtigsten, wenn auch nicht die aufregendsten, machen es einfacher, sicheren, korrekten und geschützten Code zu schreiben. Zum Beispiel standardisiert der neue -Header die geprüfte Integer-Arithmetik.
C23 fügt auch neue Funktionen hinzu, um Geheimnisse vor neugierigen Augen und Programmierer vor sich selbst zu schützen. Die neue Funktion memset_explicit() dient zum Löschen sensibler Daten im Speicher; im Gegensatz zu gewöhnlichem memset soll sie verhindern, dass Optimierungen die Löschung umgehen. Die gute alte calloc(size_t n, size_t s) alloziert immer noch ein Null-Array von n Objekten der Grösse s, aber C23 verlangt, dass sie einen Null-Zeiger zurückgibt, wenn n*s überlaufen würde.
Zusätzlich zu diesen neuen Korrektheits- und Sicherheitshilfen bietet C23 viele neue Annehmlichkeiten: Die Konstanten true, false und nullptr sind jetzt Schlüsselwörter der Sprache. Die neue typeof-Funktion macht es einfacher, Variablendeklarationen zu harmonisieren. Der Präprozessor kann nun beliebige Binärdaten in Quelldateien einbetten. Die Null-Initialisierung von Stack-Strukturen und Arrays variabler Länge ist mit der neuen Standard-Syntax "={}" ein Kinderspiel. C23 versteht binäre Literale und erlaubt Apostrophe als Zifferntrennzeichen, so dass Sie int j = 0b10'01'10 deklarieren können, und die printf-Familie unterstützt einen neuen Konvertierungsspezifizierer für die Ausgabe vorzeichenloser Typen als Binärzeichen ("01010101"). Die richtige Lösung für das klassische Vorstellungsgesprächsproblem "Zähle die 1-Bits in einem gegebenen int" ist jetzt stdc_count_ones().
Soweit die guten Nachrichten. Doch haben Terence Kelly und Borer Yekai Pan auch Negatives im neuen Standard entdeckt, die sie zu diesem Schluss kommen lassen: "Die Nichtfunktionen, Fehlfunktionen und Mängel des neuen Standards sind so zahlreich und schwerwiegend, dass Programmierer nicht 'upgraden' sollten, ohne die Risiken und Vorteile sorgfältig abzuwägen."
Hier geht's zum Artikel von Terence Kelly und Borer Yekai Pan bezüglich der Probleme mit C23.



Das könnte Sie auch interessieren