Zum Inhalt springen

Varianten der Programmiersprache C

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von ISO-C)

Seit dem Erscheinen der Programmiersprache C im Jahr 1972 wurden mehrere Varianten (Spezifikationen und internationale Standards) veröffentlicht.

K&R-C[Bearbeiten]

Mit „K&R-C“ wird die ursprüngliche 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&R1) beschrieben.

X/Open-C[Bearbeiten]

Ziel von Standardisierungsbemühungen der X/Open Company, Ltd. war die Interoperabilität verschiedener Unix-Versionen im Jahr 1987. Die meisten Erweiterungen und Präzisierungen wurden später nach C89 übernommen.

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.C89, C90[Bearbeiten]

Im Jahre 1983 gründete das American National Standards Institute (ANSI) das Komitee X3J11, um auf Grundlage von K&R-C eine Norm für die Programmiersprache C zu entwickeln. In sechsjähriger 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 später wurde sie mit kleinen Änderungen von der WG14 der ISO als Norm ISO/IEC 9899:1990 („C90“) übernommen. Auch die zweite Auflage des Buches The C Programming Language („K&R2“) übernahm 1988 diese Änderungen.

Viele bisher ungenormte Spracheigenschaften waren jetzt einheitlich festgelegt, aber auch neue Sprachmittel wie Funktionsprototypen, ein leistungsfähigerer C-Präprozessor sowie die Deklaration von Konstanten wurden in die Sprache aufgenommen. Die C-Norm räumte unter anderem mit Unklarheiten in der ursprünglichen Definition auf, hierzu zählen die Ausführungsreihenfolge der vier Inkrement- und Dekrement-Operatoren (++, --). Ferner wurde der Umfang der enthaltenen Standardbibliothek festgelegt.

Bis heute ist C90 die Sprachbasis für alle Weiterentwicklungen der Programmiersprache C, unter anderem auch für C++, das über Möglichkeiten zur objektorientierten und generischen Programmierung verfügt.

Ein auf C90 basierendes Programm sollte ohne Probleme von jedem C-Compiler übersetzt und ausgeführt werden können. In der Praxis ist das nur bedingt der Fall, da fast alle C-Derivate zusätzliche Bibliotheken und Funktionsprototypen anbieten, die auf die individuellen Komponenten des Computersystems zugreifen.

Die Bezeichnungen „ANSI C“, „C89“ und „ISO C90“ sind äquivalent. Softwareprojekte mit langer Historie wie cURL, SQLite und libxml2 sind (Stand 2022) ausschließlich in C89 geschrieben. CPython war bis Version 3.6 im Dialekt C89 abgefasst,<ref>https://lwn.net/SubscriberLink/886516/d835ee6026544345/</ref> der Linux-Kernel<ref>https://lwn.net/Articles/885941/</ref> sogar über 30 Jahre bis Version 5.17 vom März 2022.<ref name="heiseonline_7121451">Vorlage:Heise online</ref>

Neuerungen von C90[Bearbeiten]

  • Der Funktionsumfang sowie das Verhalten der Funktionen der Standardbibliothek wurden normiert.
  • Ein verbesserter Präprozessor wurde eingeführt.
  • Funktionsprototypen wurden eingeführt.
  • void für leere Funktionsparameter-Deklarationen und zur Kennzeichnung von Funktionen ohne Returnwert sowie void* für einen universell kompatiblen Zeigertyp kamen neu hinzu.
  • Die neuen Schlüsselwörter const, volatile und signed wurden eingeführt.
  • Das ungenutzte Schlüsselwort entry wurde entfernt.
  • Unterstützung für Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.- (mehr als 8 Bit Breite) sowie für Multibyte-Zeichensätze wurde hinzugefügt.

Präprozessortest auf C90-Kompatibilität[Bearbeiten]

<syntaxhighlight lang="c">

  1. if __STDC__

/*

* C90-kompatibler Quellcode.
*/
  1. endif

</syntaxhighlight>

C95[Bearbeiten]

1995 veröffentlichte 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 Änderungen am Sprachumfang.<ref>Clive D.W. Feather: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. International Organization for Standardization; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Neuerungen von C95[Bearbeiten]

  • Verbesserung der Unterstützung von Multibyte- und Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.-Zeichensätzen durch die Standardbibliothek.
  • Hinzufügen von Digraphen zur Sprache.
  • Definition von Standard-Makros zur alternativen Schreibweise von Operatoren, zum Beispiel and für &&.
  • Definition des Standard-Makros __STDC_VERSION__.

Präprozessortest auf C95-Kompatibilität[Bearbeiten]

<syntaxhighlight lang="c">

  1. if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L

/*

* C95-kompatibler Quellcode.
*/
  1. endif

</syntaxhighlight>

C99[Bearbeiten]

1995 wurde erneut ein Ausschuss gegründet, um C zu erweitern und zu verbessern. Daraus ging 1999 der ISO-Standard ISO/IEC 9899:1999 hervor, auch als „C99“ bezeichnet. Er löste den Standard ISO/IEC 9899:1994-09 (C95) ab. Zu diesem Standard erschienen 2001 ein Technical Corrigendum 1<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF; 21 kB; Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>, 2004 ein Technical Corrigendum 2<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF; 353 kB; Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> und 2007 ein Technical Corrigendum 3<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] (PDF; 164 kB) Archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2009-07-07; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>.

Mit C99 flossen einige aus C++ bekannte Erweiterungen in die Sprache C ein, zum Beispiel Inline-Funktionen und die Möglichkeit, Variablen innerhalb der for-Anweisung zu deklarieren.

Neuerungen von C99[Bearbeiten]

  • Unterstützung 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. Außerdem werden Integer-Typen mit exakter Breite spezifiziert, aber als optional bezeichnet – zum Beispiel int32_t.
  • Felder variabler Größe (sogenannte Variable Length Arrays).
  • Der boolesche Datentyp _Bool. Über einen eigenen Header <stdbool.h> wird für ihn ein Alias namens bool sowie die Werte true und false definiert.
  • Weiter verbesserte Unterstützung für internationale Zeichensätze.
  • Erweiterte Unterstützung von Gleitkommazahlen inklusive neuer mathematischer Funktionen in der C-Bibliothek.
  • Alias-freie Zeiger (Schlüsselwort restrict).
  • Frei platzierbare Deklaration von Bezeichnern (in C90 durften diese nur am Anfang eines Blocks stehen).
  • Inline-Funktionen (Schlüsselwort inline).
  • Verbot des „impliziten int“; Verbot impliziter Funktionsdeklarationen.
  • Hexadezimale Gleitkommakonstanten. Ein- und Ausgabe in scanf() und printf() über „%a“ und „%A“.
  • Präprozessor-Makros mit variabler Parameteranzahl.
  • Zulassen des aus C++ bekannten Zeilenkommentars „//“.
  • Möglichkeit einer Deklaration im ersten Ausdruck einer for-Schleife: for(int i=0;...)

Präprozessortest auf C99-Kompatibilität[Bearbeiten]

<syntaxhighlight lang="c">

  1. if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L

// Compiler ist C99-kompatibel.

  1. endif

</syntaxhighlight>

C11[Bearbeiten]

Das 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.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Neuerungen von C11[Bearbeiten]

Die Auflistung basiert auf diversen Technical Reports<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> und dem aktuellen Arbeitsdokument zu C1X.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF; 1,6 MB; Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden., nicht-normatives Arbeitsdokument).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

  • Unterstützung von Multithreading (<threads.h>, <stdatomic.h>)
  • Angaben zur Speicherausrichtung von Objekten (<stdalign.h>)
  • Neue Datentypen char16_t und char32_t zur verbesserten Unterstützung von Unicode, insbesondere UTF-16 und UTF-32 (<uchar.h>)
  • Änderungen an der Standardbibliothek zur Prüfung von Feldgrenzen zur Laufzeit des Programms, um z. B. Pufferüberläufe wirksamer vermeiden zu können<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF; 565 kB; Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden., Entwurf).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
  • Unterstützung der internen dezimalen Darstellung von Gleitkommazahlen gemäß IEEE 754-2008
  • Öffnen von Dateien mit exklusivem Lese-/Schreibrecht (Modus „x“)
  • Generische Ausdrücke (Schlüsselwort _Generic), generische mathematische Funktionen für Gleitkommazahlen und komplexe Zahlen (<tgmath.h>)
  • Entfernung der Bibliotheksfunktion gets
  • Einige der in C99 geforderten Funktionalitäten sind Compiler-Herstellern bei C11 wieder freigestellt, wie z. B. lokale Felder variabler Größe, komplexe Zahlen. Der Funktionsumfang kann mit Hilfe von Compiler-Defines abgefragt werden: __STDC_NO_COMPLEX__ (keine komplexe Zahlen), __STDC_NO_VLA__ (keine Felder variabler Länge)

Präprozessortest auf C11-Kompatibilität[Bearbeiten]

<syntaxhighlight lang="c">

  1. if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
// C11 kompatibler Quellcode.
  1. endif

</syntaxhighlight>

C17[Bearbeiten]

Diese 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 unterstützt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Der Standard wurde im Juni 2018 unter der Norm ISO/IEC 9899:2018 freigegeben.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

C23[Bearbeiten]

C23 ist die im Oktober 2024 veröffentlichte Revision des C-Standards.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Zu den Neuerungen gehören u. a. die Aufnahme von Attributen (wie sie bereits als Compiler-abhängige Erweiterungen üblich waren) mit einer an C++ angelehnten Syntax,<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> die binäre Schreibweise von Integerkonstanten,<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> der neue Operator typeof,<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> eine gegenüber C++ abgespreckte Version von constexpr,<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> die Einführung der Präprozessor-Direktiven #elifdef, #elifndef,<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> #warning,<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> und #embed<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> sowie die Einführung diverser Schlüsselwörter, die in vorherigen Versionen über Macros realisiert wurden (bool, true, false, alignof, alignas, nullptr, thread_local, ...).<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Um Rückwärtskompatibilität zu gewährleisten, sind die bisherigen Schreibweisen _Bool, _Alignof, _Thread_local etc. aber weiterhin gültig.

Beispiele für den Unterschied zwischen verschiedenen Fassungen der Sprache C[Bearbeiten]

K&R-C: <syntaxhighlight lang="c"> /* Es gibt noch keine Funktionsprototypen. Die Funktion gibt implizit ein (hier undefiniertes) int zurück, void und const gibt es noch nicht */ Ausgabe(str) char *str; {

   int vier 4;  /* das '=' war optional */
   printf("%s %d\n", str, vier);

}

main() {

   Ausgabe("Hallo Welt!");
   return 0;

} </syntaxhighlight>

C90/C95: <syntaxhighlight lang="c">

  1. include <stdio.h>

/* Das Argument darf nicht geändert werden. */ void Ausgabe(const char* const str) {

   int vier = 4;
   printf("%s %d\n", str, vier);

}

main() {

   Ausgabe("Hallo Welt!");
   return 0;

} </syntaxhighlight>

C99/C11: <syntaxhighlight lang="c">

  1. include <stdio.h> // C++-Kommentare endlich offiziell erlaubt, nachdem 10 Jahre lang von Compilern unterstützt

void Ausgabe(const char* const str) {

   int vier = 4;
   printf("%s %d\n", str, vier);

}

int main() {

   Ausgabe("Hallo Welt!");
   // Ab C99 auch implizite Beendigung, interpretiert als: return 0;

} </syntaxhighlight>

Weblinks[Bearbeiten]

  • Dennis M. Ritchie: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.
  • <templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Vorlage:Webarchiv/Wartung/URLSkriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.
  • Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.
  • Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF; 3,8 MB; Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden., nicht-normatives Arbeitsdokument).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.
  • Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF; 898 kB; Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.
  • ISO/IEC C11 final working draft (PDF; 1,6 MB)
  • Draft zur ISO/IEC 9899:2018 vom 1. November 2017

Einzelnachweise[Bearbeiten]

<references />