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
- Kodifizierung bestehender Praktiken
- Neue Funktionen: volatile , enum , signed , void , Locales
- 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)
- 1995: C95 (ISO/IEC 9899:1990/Amd.1:1995) ( Online-Shop )
- stark erweiterte Unterstützung für breite und mehrbyte Zeichen ( <wctype.h> , <wchar.h> , Ergänzungen und Änderungen an Stream-I/O, etc)
- Digraphen, <iso646.h> ,
- 1996: Technische Berichtigung 2 (ISO/IEC 9899:1990/Cor.2:1996)
- 1999: C99 (ISO/IEC 9899:1999)
-
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
,
hhundllLängenspezifizierer in printf , snprintf , _Exit , <tgmath.h> , POSIX-ähnliche strftime Spezifizierer - Aus C++: inline , Vermischung von Deklarationen und Code, Deklarationen in der Init-Klausel der for-Schleife, // Kommentare, universelle Zeichennamen im Quellcode
- 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)
-
- Veraltet gets
- 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)
- 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
- entfernt gets
- aus Bounds-checking interfaces TR: grenzprüfende Schnittstellen,
- aus Unicode TR: char16_t , char32_t , und <uchar.h>
- 2012: Technische Berichtigung 1 (ISO/IEC 9899:2011/Cor 1:2012) ( ISO Store )
-
- Behebt DR 411
- 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)
- 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)
- 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)
- 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)
- 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)
- bietet Änderungen an C11 zur Unterstützung aller ergänzenden Attribute (Bewertungsmodell, Ausnahmebehandlung, Reproduzierbarkeit usw.), die von IEC 60559:2011 empfohlen werden
- 2018: C17 (ISO/IEC 9899:2018) ( ISO Store ) ( Final draft )
| Fehlerberichte behoben in C17 (54 Fehler) |
|---|
|
- 2023 C23 (ISO/IEC 9899:2024). C23 ist die aktuelle Revision des C-Standards.
| 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)
- 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 |