Unterschied zwischen c99 und c11 [closed]

Lesezeit: 4 Minuten

Ich bin nicht gut darin, den Benutzeravatar von name zu finden
Ich bin nicht gut darin, Namen zu finden

Ich lerne gerade c. Das Buch, das ich gelesen habe, basiert auf C99. Ich möchte mein Wissen auf C11 aktualisieren, nachdem ich dieses Buch beendet habe, oder die Ressource wechseln, wenn es einen großen Unterschied gibt. Was ich also verlange, ist eine Erklärung oder Ressource, um mein Wissen zu aktualisieren. Ich habe nur diese Quelle gefunden. Trotzdem scheint es nicht die Informationen zu umfassen, die ich benötige, oder nicht prägnant.

Danke im Voraus. PS: Ich möchte C11 lernen, da ich denke, dass es jetzt der vorherrschende Standard ist. Wenn nicht, informieren Sie mich bitte.

  • Ich denke nicht, dass Sie sich in der jetzigen Phase zu viele Gedanken darüber machen sollten.

    – Eugen Sch.

    15. Juli 2016 um 21:29 Uhr

  • Nun, es gibt Wikipedia.

    – gelbantphil

    15. Juli 2016 um 21:30 Uhr

  • Etwa 12 Jahre Verbesserungen, nach vielen Verhandlungen. Damit sind in erster Linie Zusatzfunktionen gemeint, die in bestimmten Situationen nützlich sein können; aber um den C-Code auf die nächste Version portierbar zu halten, werden sie höchstwahrscheinlich keinen Code beschädigen, den Sie in C99 schreiben, oder sie würden ihre Entwicklerbasis verlieren.

    – Edwin Buck

    25. August 2019 um 15:23 Uhr


Benutzeravatar von Evgeny Karkan
Eugen Karkan

Gute Übersichten zum C11-Standard:

Der Standard enthält mehrere Änderungen an den C99-Sprach- und Bibliotheksspezifikationen, wie zum Beispiel:

  • Ausrichtungsspezifikation (_Alignas Spezifizierer, _Alignof Operator, aligned_alloc Funktion, <stdalign.h> Header-Datei)
  • Das _Noreturn Funktionsbezeichner und die <stdnoreturn.h> Header-Datei
  • Geben Sie generische Ausdrücke mit dem ein _Generic Stichwort. Beispielsweise das folgende Makro cbrt(x) wird übersetzt in cbrtl(x), cbrt(x) oder cbrtf(x) je nach art x:

    #define cbrt(x) _Generic((x), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(x)
    
  • Multithreading-Unterstützung (_Thread_local Speicherklassenbezeichner, <threads.h> Header einschließlich Thread-Erstellungs-/Verwaltungsfunktionen, Mutex, Bedingungsvariable und Thread-spezifische Speicherfunktionen sowie die _Atomic Typqualifizierer und <stdatomic.h> für unterbrechungsfreien Objektzugriff).

  • Verbesserte Unicode-Unterstützung basierend auf dem C Unicode Technical Report ISO/IEC TR 19769:2004 (char16_t und char32_t Typen zum Speichern UTF-16/UTF-32 codierte Daten, einschließlich Konvertierungsfunktionen in <uchar.h> und die entsprechenden u- und U-String-Literalpräfixe sowie das u8-Präfix für UTF-8 codierte Literale).
  • Entfernung der gets Funktion, veraltet in der vorherigen Überarbeitung des C-Sprachstandards, ISO/IEC 9899:1999/Cor.3:2007(E), zugunsten einer neuen sicheren Alternative, gets_s.
  • Bounds-Checking-Schnittstellen (Anhang K).
  • Analysierbarkeitsmerkmale (Anhang L).
  • Weitere Makros zum Abfragen der Eigenschaften von Fließkommatypen bezüglich subnormaler Fließkommazahlen und der Anzahl der Dezimalstellen, die der Typ speichern kann.
  • Anonyme Strukturen und Vereinigungen, nützlich, wenn Vereinigungen und Strukturen verschachtelt sind, z. B. in struct T { int tag; union { float x; int n; }; };.
  • Statische Zusicherungen, die während der Übersetzung zu einem späteren Zeitpunkt ausgewertet werden #if und #errorwenn Typen vom Übersetzer verstanden werden.
  • Ein exklusiver Erstellungs- und Öffnungsmodus ("…x" Zusatz) für open. Das verhält sich wie O_CREAT|O_EXCL in POSIXdas häufig für Sperrdateien verwendet wird.
  • Das quick_exit Funktion als dritte Möglichkeit, ein Programm zu beenden, um bei Beendigung mit zumindest eine minimale Deinitialisierung durchzuführen exit scheitert.
  • Makros für den Aufbau komplexer Werte (teilweise weil real + imaginary*I liefert möglicherweise nicht den erwarteten Wert, wenn imaginary ist unendlich bzw NaN).

Pro die C 2011-Standard selbst, hier sind die wichtigsten Änderungen gegenüber C99:

Vorwort


6 Diese dritte Ausgabe annulliert und ersetzt die zweite Ausgabe, ISO/IEC 9899:1999, korrigiert durch ISO/IEC 9899:1999/Cor 1:2001, ISO/IEC 9899:1999/Cor 2:2004 und ISO/IEC 9899 :1999/Kor 3:2007. Zu den wichtigsten Änderungen gegenüber der vorherigen Ausgabe gehören:

— bedingte (optionale) Funktionen (einschließlich einiger, die zuvor obligatorisch waren)

— Unterstützung für mehrere Ausführungsthreads, einschließlich eines verbesserten Speichersequenzierungsmodells, atomarer Objekte und Thread-lokaler Speicherung (<stdatomic.h> und
<threads.h>)

— zusätzliche Floating-Point-Charakteristik-Makros (<float.h>)

— Abfragen und Spezifizieren der Ausrichtung von Objekten (<stdalign.h>, <stdlib.h>)

— Unicode-Zeichen und -Strings (<uchar.h>) (ursprünglich spezifiziert in ISO/IEC TR 19769:2004)

— Typgenerische Ausdrücke

— statische Behauptungen

— anonyme Strukturen und Gewerkschaften

— No-Return-Funktionen

— Makros zum Erstellen komplexer Zahlen (<complex.h>)

— Unterstützung für das Öffnen von Dateien für exklusiven Zugriff

— entfernt die gets Funktion (<stdio.h>)

— hinzugefügt aligned_alloc, at_quick_exitund quick_exit Funktionen (<stdlib.h>)

— (bedingte) Unterstützung für Bounds-Checking Interfaces (ursprünglich spezifiziert in ISO/IEC TR 24731−1:2007)

— (bedingte) Unterstützung der Analysierbarkeit

  • Der Link führt zum N1570-Entwurf des C11-Standards. Zwischen diesem Entwurf und dem endgültig veröffentlichten Standard wurden einige sehr geringfügige Änderungen vorgenommen.

    – Keith Thompson

    15. Juli 2016 um 22:20 Uhr

  • Der C11-Standard selbst ist nur zum Kauf erhältlich, daher ist N1570 für Leute wie mich, @JohnBode und die breite Öffentlichkeit das Beste, was wir für C11 haben (ohne Geld zu bezahlen). Sehen ISO/IEC 9899 – Programmiersprachen – C

    – Jeremiah Peschka

    21. August 2019 um 14:55 Uhr

1398590cookie-checkUnterschied zwischen c99 und c11 [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy