Namespaces
Variants

History of C

From cppreference.net

Inhaltsverzeichnis

Frühes C

  • 1969: B erstellt, basierend auf BCPL, um den PDP-7-Assembler als Systemprogrammiersprache für Unix zu ersetzen
  • hinzugefügte Operatoren ++ , -- , zusammengesetzte Zuweisungen, blieb eine typenlose Sprache wie BCPL
  • 1971: NB ("new B") entsteht beim Portieren von B auf PDP-11
  • Typen ( int , char , Arrays und Zeiger), Array-zu-Zeiger-Konvertierung, Kompilierung in Maschinencode
  • 1972: Die Sprache wurde in C umbenannt
  • struct , Operatoren && und || , Präprozessor, portable E/A
  • 1973: Unix in C neu geschrieben
  • unsigned , long , union , Aufzählungstypen, erhöhte Typsicherheit
  • 1978: The C Programming Language, 1. Auflage

Standard C

  • 1983: ANSI gründete das X3J11-Komitee
  • 1988: The C Programming Language, 2. Auflage
  • 1989: C89 , der ANSI-C-Standard veröffentlicht
  1. Kodifizierung bestehender Praktiken
  2. Neue Funktionen: volatile , enum , signed , void , Locales
  3. Aus C++: const , Funktionsprototypen
  • 1990: C90 , der ANSI-C-Standard akzeptiert als ISO/IEC 9899:1990
  • 1994: Technische Berichtigung 1 (ISO/IEC 9899:1990/Cor.1:1994)
  1. stark erweiterte Unterstützung für breite und mehrbyte Zeichen ( <wctype.h> , <wchar.h> , Ergänzungen und Änderungen an Stream-I/O, etc)
  2. Digraphen, <iso646.h> ,
  • 1996: Technische Berichtigung 2 (ISO/IEC 9899:1990/Cor.2:1996)
  • 1999: C99 (ISO/IEC 9899:1999)
  1. Neue Funktionen: bool , long long , <stdint.h> , <inttypes.h> , restrict , zusammengesetzte Literale, Arrays variabler Länge, flexible Array-Mitglieder, benannte Initialisierer, <fenv.h> , variadische Makros, komplexe Zahlen, __func__ , hexadezimales Gleitkommaformat ( % a ), Währungsformatierung in lconv , isblank , Verkettung von schmalen und breiten Zeichenkettenliteralen, nachgestelltes Komma in Aufzählungen, leere Argumente in funktionsähnlichen Makros, STDC_ * Pragmas, va_copy , Null-Rückgabe von tmpnam , Nullzeiger in setvbuf , hh und ll Längenspezifizierer in printf , snprintf , _Exit , <tgmath.h> , POSIX-ähnliche strftime Spezifizierer
  2. Aus C++: inline , Vermischung von Deklarationen und Code, Deklarationen in der Init-Klausel der for-Schleife, // Kommentare, universelle Zeichennamen im Quellcode
  3. Entfernte implizite Funktionen und implizites int
  • 2001: Technische Berichtigung 1 (ISO/IEC 9899:1999/Cor.1:2001)
  • 2004: Technische Berichtigung 2 (ISO/IEC 9899:1999/Cor.2:2004)
  • 2004: Unicode TR (ISO/IEC TR 19769:2004) ( ISO Store ) ( N1040 Entwurf vom 7. November 2003)
  • 2007: Technische Berichtigung 3 (ISO/IEC 9899:1999/Cor.3:2007) ( N1256 Entwurf vom 7. September 2007)
  • 2007: Bounds-checking Interfaces TR (ISO/IEC TR 24731-1:2007) ( ISO-Store ) ( N1225 Entwurf vom 28. März 2007)
  • 2008: Embedded TR (ISO/IEC TR 18037:2008) ( ISO-Store ) ( N1021 Entwurf vom 24. September 2003)
  • 2009: Decimal Floating-Point TR (ISO/IEC TR 24732:2009) ( ISO-Store ) ( N1241 Entwurf vom 5. Juli 2007)
  • 2009: Mathematical Special Functions TR (ISO/IEC TR 24747:2009) ( ISO-Store ) ( N1182 Entwurf vom 2. August 2006)
  • 2010: Dynamic Allocations Functions TR (ISO/IEC TR 24731-2:2010) ( ISO-Store ) ( N1388 Entwurf vom 1. Juni 2009)
  • 2011: C11 (ISO/IEC 9899:2011) ( ISO-Store ) ( ANSI-Store ) ( N1570 Entwurf vom 12. April 2011)
  1. thread-bewusstes Speichermodell, <stdatomic.h> , <threads.h> , typgenerische Funktionen, alignas / alignof , noreturn , static_assert , Analysierbarkeitserweiterungen, Erweiterungen für komplexe und imaginäre Typen, anonyme Strukturen und Unions, exklusiver Dateiöffnungsmodus, quick_exit
  2. entfernt gets
  3. aus Bounds-checking interfaces TR: grenzprüfende Schnittstellen,
  4. aus Unicode TR: char16_t , char32_t , und <uchar.h>
  • 2012: Technische Berichtigung 1 (ISO/IEC 9899:2011/Cor 1:2012) ( ISO Store )
  • 2013: Secure Coding Rules TS (ISO/IEC TS 17961:2013) ( ISO-Store ) ( N1718 30. Mai 2013)
  • 2014: FP TS Teil 1: Binäre Gleitkommaarithmetik (ISO/IEC TS 18661-1:2014) ( ISO-Store ) ( N1778 Entwurf 2013)
  1. bietet Änderungen an C11 (hauptsächlich an Anhang F), die alle grundlegenden Anforderungen und einige Empfehlungen von IEC 60559:2011 abdecken (C11 basierte auf IEC 60559:1989)
  • 2015: FP TS Teil 2: Dezimal-Gleitkommaarithmetik (ISO/IEC TS 18661-2:2015) ( ISO Store ) ( N1912 2015-Entwurf)
  1. bietet Änderungen an C11, um alle Anforderungen sowie einige grundlegende Empfehlungen von IEC 60559:2011 für dezimale Gleitkommaarithmetik zu unterstützen. Dies ersetzt ISO/IEC TR 24732:2009.
  • 2015: FP TS Teil 3: Austausch- und erweiterte Typen (ISO/IEC TS 18661-3:2015) ( ISO Store ) ( N1945 2015 Entwurf)
  1. bietet Änderungen an C11, um die Empfehlungen von IEC 60559:2011 für erweiterte Gleitkommaformate und die Austauschformate, sowohl arithmetische als auch nicht-arithmetische, zu unterstützen.
  • 2015: FP TS Teil 4: Ergänzende Funktionen (ISO/IEC TS 18661-4:2015) ( ISO Store ) ( N1950 2015 Entwurf)
  1. bietet Änderungen an C11, um alle von IEC 60559:2011 empfohlenen mathematischen Operationen zu unterstützen, einschließlich Trigonometrie in π-Einheiten, inverse Quadratwurzel, Zinseszins usw.
  • 2016: FP TS Teil 5: Ergänzende Attribute (ISO/IEC TS 18661-5:2016) ( ISO Store ) ( N2004 2016 Entwurf)
  1. bietet Änderungen an C11 zur Unterstützung aller ergänzenden Attribute (Bewertungsmodell, Ausnahmebehandlung, Reproduzierbarkeit usw.), die von IEC 60559:2011 empfohlen werden
Hauptartikel: C17
Fehlerberichte behoben in C17 (54 Fehler)
  • 2023 C23 (ISO/IEC 9899:2024). C23 ist die aktuelle Revision des C-Standards.
Hauptartikel: C23
Beheberte Fehlerberichte in C23 (? Fehler)

Zukünftige Entwicklung

  • Parallelism TS (Entwurf N2017 2016-03-10)
  • Transactional Memory TS (Entwurf N1961 2015-09-23)
  • C (Aktueller Entwurf n3550 2025-05-04)
  1. Liste der Probleme, denen kein DR-Status gewährt wurde: ( N2556 2020-08-02)
Hauptartikel: C29 ?
Nächste größere Überarbeitung des C-Sprachstandards

Siehe auch

C++-Dokumentation für Geschichte von C++

Externe Links

1. Die Entwicklung der C-Programmiersprache von Dennis M. Ritchie
2. Begründung für den C99-Standard