www.wikidata.de-de.nina.az
Seit dem Erscheinen der Programmiersprache C im Jahr 1972 wurden mehrere Varianten Spezifikationen und internationale Standards veroffentlicht Inhaltsverzeichnis 1 K amp R C 2 X Open C 3 C89 C90 3 1 Neuerungen von C90 3 2 Praprozessortest auf C90 Kompatibilitat 4 C95 4 1 Neuerungen von C95 4 2 Praprozessortest auf C95 Kompatibilitat 5 C99 5 1 Neuerungen von C99 5 2 Praprozessortest auf C99 Kompatibilitat 6 C11 6 1 Neuerungen von C11 6 2 Praprozessortest auf C11 Kompatibilitat 7 C17 8 C23 C2x 9 Beispiele fur den Unterschied zwischen verschiedenen Fassungen der Sprache C 10 Weblinks 11 EinzelnachweiseK amp R C BearbeitenMit K amp R C wird die ursprungliche C Variante bezeichnet nach ihren Erfindern Brian W Kernighan und Dennis Ritchie die sie 1978 in der ersten Auflage ihres Buches The C Programming Language K amp R1 beschrieben X Open C BearbeitenZiel von Standardisierungsbemuhungen der X Open Company Ltd war die Interoperabilitat verschiedener Unix Versionen im Jahr 1987 Die meisten Erweiterungen und Prazisierungen wurden spater nach C89 ubernommen C89 C90 BearbeitenIm Jahre 1983 grundete das American National Standards Institute ANSI das Komitee X3J11 um auf Grundlage von K amp R C eine Norm fur die Programmiersprache C zu entwickeln In sechsjahriger Arbeit entstand bis Dezember 1989 die Norm ANSI X3 159 1989 Programming Language C Diese Sprachfassung wird nach dem Erscheinungsjahr auch als C89 bezeichnet Ein Jahr spater wurde sie mit kleinen Anderungen von der WG14 der ISO als Norm ISO IEC 9899 1990 C90 ubernommen Auch die zweite Auflage des Buches The C Programming Language K amp R2 ubernahm 1988 diese Anderungen Viele bisher ungenormte Spracheigenschaften waren jetzt einheitlich festgelegt aber auch neue Sprachmittel wie Funktionsprototypen ein leistungsfahigerer C Praprozessor sowie die Deklaration von Konstanten wurden in die Sprache aufgenommen Die C Norm raumte unter anderem mit Unklarheiten in der ursprunglichen Definition auf hierzu zahlen die Ausfuhrungsreihenfolge der vier Inkrement und Dekrement Operatoren Ferner wurde der Umfang der enthaltenen Standardbibliothek festgelegt Bis heute ist C90 die Sprachbasis fur alle Weiterentwicklungen der Programmiersprache C unter anderem auch fur C das uber Moglichkeiten zur objektorientierten und generischen Programmierung verfugt Ein auf C90 basierendes Programm sollte ohne Probleme von jedem C Compiler ubersetzt und ausgefuhrt werden konnen In der Praxis ist das nur bedingt der Fall da fast alle C Derivate zusatzliche Bibliotheken und Funktionsprototypen anbieten die auf die individuellen Komponenten des Computersystems zugreifen Die Bezeichnungen ANSI C C89 und ISO C90 sind aquivalent Softwareprojekte mit langer Historie wie cURL SQLite und libxml2 sind Stand 2022 ausschliesslich in C89 geschrieben CPython war bis Version 3 6 im Dialekt C89 abgefasst 1 der Linux Kernel 2 sogar uber 30 Jahre bis Version 5 17 vom Marz 2022 3 Neuerungen von C90 Bearbeiten Der Funktionsumfang sowie das Verhalten der Funktionen der Standardbibliothek wurden normiert Ein verbesserter Praprozessor wurde eingefuhrt Funktionsprototypen wurden eingefuhrt void fur leere Funktionsparameter Deklarationen und zur Kennzeichnung von Funktionen ohne Returnwert sowie void fur einen universell kompatiblen Zeigertyp kamen neu hinzu Die neuen Schlusselworter const volatile und signed wurden eingefuhrt Das ungenutzte Schlusselwort entry wurde entfernt Unterstutzung fur wide character mehr als 8 Bit Breite sowie fur Multibyte Zeichensatze wurde hinzugefugt Praprozessortest auf C90 Kompatibilitat Bearbeiten if STDC C90 kompatibler Quellcode endifC95 Bearbeiten1995 veroffentlichte die ISO eine Erweiterung das Amendment 1 zur C Norm die dann als ISO IEC 9899 AMD1 1995 C95 bezeichnet wurde Neben Fehlerkorrekturen gab es auch Anderungen am Sprachumfang 4 5 Neuerungen von C95 Bearbeiten Verbesserung der Unterstutzung von Multibyte und wide character Zeichensatzen durch die Standardbibliothek Hinzufugen von Digraphen zur Sprache Definition von Standard Makros zur alternativen Schreibweise von Operatoren zum Beispiel and fur amp amp Definition des Standard Makros STDC VERSION Praprozessortest auf C95 Kompatibilitat Bearbeiten if defined STDC VERSION amp amp STDC VERSION gt 199409L C95 kompatibler Quellcode endifC99 Bearbeiten1995 wurde erneut ein Ausschuss gegrundet um C zu erweitern und zu verbessern Daraus ging 1999 der ISO Standard ISO IEC 9899 1999 hervor auch als C99 bezeichnet Er loste den Standard ISO IEC 9899 1994 09 C95 ab Zu diesem Standard erschienen 2001 ein Technical Corrigendum 1 6 2004 ein Technical Corrigendum 2 7 und 2007 ein Technical Corrigendum 3 8 Mit C99 flossen einige aus C bekannte Erweiterungen in die Sprache C ein zum Beispiel Inline Funktionen und die Moglichkeit Variablen innerhalb der for Anweisung zu deklarieren Neuerungen von C99 Bearbeiten Unterstutzung von komplexen Zahlen durch den neuen Datentyp Complex und entsprechende Funktionen in der Standardbibliothek zusammengesetzte Literale Bestimmte Initialisierer Erweiterung der ganzzahligen Datentypen um einen mindestens 64 Bit breiten Typ long long sowie um Typen mit vorgegebener Mindestbreite zum Beispiel int least8 t und uint least32 t Ausserdem werden Integer Typen mit exakter Breite spezifiziert aber als optional bezeichnet zum Beispiel int32 t Felder variabler Grosse sogenannte Variable Length Arrays Der boolesche Datentyp Bool Uber einen eigenen Header lt stdbool h gt wird fur ihn ein Alias namens bool sowie die Werte true und false definiert Weiter verbesserte Unterstutzung fur internationale Zeichensatze Erweiterte Unterstutzung von Gleitkommazahlen inklusive neuer mathematischer Funktionen in der C Bibliothek Alias freie Zeiger Schlusselwort restrict Frei platzierbare Deklaration von Bezeichnern in C90 durften diese nur am Anfang eines Blocks stehen Inline Funktionen Schlusselwort inline Verbot des impliziten int Verbot impliziter Funktionsdeklarationen Hexadezimale Gleitkommakonstanten Ein und Ausgabe in scanf und printf uber a und A Praprozessor Makros mit variabler Parameteranzahl Zulassen des aus C bekannten Zeilenkommentars Moglichkeit einer Deklaration im ersten Ausdruck einer for Schleife for int i 0 Praprozessortest auf C99 Kompatibilitat Bearbeiten if defined STDC VERSION amp amp STDC VERSION gt 199901L Compiler ist C99 kompatibel endifC11 BearbeitenDas Normierungskomitee WG14 arbeitete an einer Neuauflage des C Standards mit Arbeitstitel C1X basierend auf dem C99 Standard inklusive der Technical Corrigenda TC1 TC2 und TC3 C0X Am 8 Dezember 2011 wurde C11 als ISO IEC 9899 2011 verabschiedet 9 10 Neuerungen von C11 Bearbeiten Die Auflistung basiert auf diversen Technical Reports 11 und dem aktuellen Arbeitsdokument zu C1X 12 Unterstutzung von Multithreading lt threads h gt lt stdatomic h gt Angaben zur Speicherausrichtung von Objekten lt stdalign h gt Neue Datentypen char16 t und char32 t zur verbesserten Unterstutzung von Unicode insbesondere UTF 16 und UTF 32 lt uchar h gt Anderungen an der Standardbibliothek zur Prufung von Feldgrenzen zur Laufzeit des Programms um z B Pufferuberlaufe wirksamer vermeiden zu konnen 13 Unterstutzung der internen dezimalen Darstellung von Gleitkommazahlen gemass IEEE 754 2008 Offnen von Dateien mit exklusivem Lese Schreibrecht Modus x Generische Ausdrucke Schlusselwort Generic generische mathematische Funktionen fur Gleitkommazahlen und komplexe Zahlen lt tgmath h gt Entfernung der Bibliotheksfunktion gets Einige der in C99 geforderten Funktionalitaten sind Compiler Herstellern bei C11 wieder freigestellt wie z B lokale Felder variabler Grosse komplexe Zahlen Der Funktionsumfang kann mit Hilfe von Compiler Defines abgefragt werden STDC NO COMPLEX keine komplexe Zahlen STDC NO VLA keine Felder variabler Lange Praprozessortest auf C11 Kompatibilitat Bearbeiten if defined STDC VERSION amp amp STDC VERSION gt 201112L C11 kompatibler Quellcode endifC17 BearbeitenDiese Norm entspricht der von C11 mit der Ausnahme von Fehlerkorrekturen und einem neuen Wert von STDC VERSION und wird daher im selben Umfang wie C11 unterstutzt 14 Der Standard wurde im Juni 2018 unter der Norm ISO IEC 9899 2018 freigegeben 15 C23 C2x BearbeitenC23 zuvor meist noch als C2x bezeichnet ist der noch informelle Name fur die nachste und fur das Jahr 2023 geplante Revision des C Standards 16 17 Zu den noch nicht verabschiedeten Neuerungen sollen u a die Aufnahme von Attributen wie sie bereits als Compiler abhangige Erweiterungen ublich waren mit einer neuen Syntax 18 die binare Schreibweise von Integerkonstanten 19 und die Einfuhrung neuer Praprozessor Direktiven gehoren Beispiele fur den Unterschied zwischen verschiedenen Fassungen der Sprache C BearbeitenK amp R C Es gibt noch keine Funktionsprototypen Die Funktion gibt implizit ein hier undefiniertes int zuruck void und const gibt es noch nicht Ausgabe str char str printf s n str main Ausgabe Hallo Welt return 0 C90 C95 include lt stdio h gt Das Argument darf nicht geandert werden void Ausgabe const char const str printf s n str main Ausgabe Hallo Welt return 0 C99 C11 include lt stdio h gt void Ausgabe char str printf s n str int main Ausgabe Hallo Welt Ab C99 auch implizite Beendigung interpretiert als return 0 Weblinks BearbeitenDennis M Ritchie The Development of the C Language Abgerufen am 12 September 2010 englisch C89 Draft Memento vom 7 Februar 2005 im Internet Archive Rationale fur C89 Abgerufen am 12 September 2010 englisch ISO IEC 9899 1999 C99 mit TC1 TC2 und TC3 PDF 3 8 MB Abgerufen am 12 September 2010 englisch nicht normatives Arbeitsdokument Rationale fur C99 Revision 5 10 PDF 898 kB Abgerufen am 12 September 2010 englisch ISO IEC C11 final working draft PDF 1 6 MB Draft zur ISO IEC 9899 2018 vom 1 November 2017Einzelnachweise Bearbeiten https lwn net SubscriberLink 886516 d835ee6026544345 https lwn net Articles 885941 Oliver Muller Linux 5 18 kommt als kleine Revolution In Heise online 24 Mai 2022 Abgerufen am 27 Mai 2022 Zitat Der neue Linux Kernel wechselt erstmalig zu einem neueren C Standard Clive D W Feather A brief description of Normative Addendum 1 Abgerufen am 12 September 2010 englisch ISO IEC 9899 1990 Amd 1 1995 International Organization for Standardization abgerufen am 22 Marz 2013 englisch C99 Technical Corrigendum 1 PDF 21 kB Abgerufen am 22 September 2010 englisch C99 Technical Corrigendum 2 PDF 353 kB Abgerufen am 22 September 2010 englisch C99 Technical Corrigendum 3 PDF 0 kB Nicht mehr online verfugbar Archiviert vom Original am 7 Juli 2009 abgerufen am 22 September 2010 englisch ISO aktualisiert C Standard Abgerufen am 23 Dezember 2011 englisch Artikel von heise online Abgerufen am 23 Dezember 2011 englisch Projektstatus fur C1X Abgerufen am 12 September 2010 englisch ISO IEC 9899 201x PDF 1 6 MB Abgerufen am 12 April 2011 englisch nicht normatives Arbeitsdokument Extensions to the C Library Part I Bounds checking interfaces PDF 565 kB Abgerufen am 31 Oktober 2010 englisch Entwurf Options Controlling C Dialect Abgerufen am 8 September 2018 ISO IEC 9899 2018 Programming languages C Abgerufen am 8 September 2018 Revised C23 Schedule In Open Standards Abgerufen am 22 Juni 2022 englisch C23 In cppreference com 16 Mai 2022 abgerufen am 22 Juni 2022 englisch Attribute specifier sequence since C23 In cppreference com 18 Juni 2022 abgerufen am 22 Juni 2022 englisch Integer constant In cppreference com 29 Oktober 2021 abgerufen am 22 Juni 2022 englisch Abgerufen von https de wikipedia org w index php title Varianten der Programmiersprache C amp oldid 232886839