ISO/IEC 9899:1999

ISO/IEC 9899:1999

Inhaltsverzeichnis

K&R-C

Mit K&R-C wird die C-Variante bezeichnet, wie sie ursprünglich von den Erfindern Brian W. Kernighan und Dennis Ritchie verfasst wurde und in der ersten Auflage ihres Buches The C Programming Language (1978) erschien.

C89, C90

Im Jahre 1983 wurde vom American National Standards Institute (ANSI) ein Komitee namens X3J11 gegründet, um eine Norm für die Programmiersprache C zu entwickeln. Als Grundlage für die Sprachdefinition diente die Programmiersprache C, wie sie von den Erfindern Brian W. Kernighan und Dennis Ritchie (K&R-C) konzipiert wurde.

Nach sechsjähriger Arbeit konnte im Dezember 1989 die Norm ANSI X3.159-1989 Programming Language C verabschiedet werden. Diese Fassung der Sprache C wird aufgrund ihres Erscheinungsjahres auch als C89 bezeichnet. Ein Jahr später, 1990, wurde diese Norm (mit ein paar kleineren Änderungen) von der WG14 der ISO als Norm ISO/IEC 9899:1990 (C90), übernommen.

Viele der bis dato ungenormten Eigenschaften der Sprache wurden einheitlich festlegt, aber auch neue Sprachmittel wie Funktionsprototypen, ein leistungsfähigerer Präprozessor, sowie die Möglichkeit zur Deklaration von Konstanten, wurden in die Sprache aufgenommen. Die C-Norm räumte dabei unter anderem mit Unklarheiten in der ursprünglichen Definition auf, hierzu zählen die Ausführungsreihenfolge der vier Inkrement- und Dekrement-Operatoren (++, --). Mit der Norm wurden ferner die enthaltenen C-Bibliotheken festgelegt.

Bis heute ist C90 die Sprachbasis für alle Derivate der Programmiersprache C, unter anderem auch für das modernere 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 dieses nur sehr bedingt der Fall, da fast alle C-Derivate viele eigene Bibliotheken und Funktionsprototypen benutzten, um auf die individuellen Komponenten des Computers zugreifen zu können.

Zusammenfassung der wichtigsten Neuerungen von C90:

  • Der Funktionsumfang sowie das Verhalten der Funktionen der C-Bibliothek wurden normiert.
  • Ein verbesserter Präprozessor wurde eingeführt.
  • Funktionsprototypen wurden eingeführt.
  • Die neuen Schlüsselwörter const, volatile und signed wurden eingeführt.
  • Das ungenutzte Schlüsselwort entry wurde entfernt.
  • Es wurde Unterstützung für „wide character“ - mehr als 8 Bit Breite sowie für Multibyte Zeichensätze hinzugefügt.

Präprozessortest auf C90-Kompatibilität

#if __STDC__
 
/*
 * C90-kompatibler Quellcode.
 */
 
#endif

C95

1995 veröffentlichte die ISO eine Erweiterung - das Amendment 1 - zur C Norm, die dann als ISO/IEC 9899:199409 (C95) bezeichnet wurde. Die Änderungen bestanden neben Fehlerkorrekturen

  • In der Verbesserung der Unterstützung von Multibyte und „wide character“ Zeichensätze durch die C-Bibliotheken.
  • Dem Hinzufügen von Digraphen zur Sprache.
  • Der Definition von Standard-Makros zur alternativen Schreibweise von Operatoren wie z.B. and für &&.
  • Der Definition des Standard-Makros __STDC_VERSION__.

Präprozessortest auf C95-Kompatibilität

#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L
 
/*
 * C95-kompatibler Quellcode.
 */
 
#endif

C99

1995 wurde erneut ein Ausschuss gegründet, um C zu erweitern und zu verbessern. Daraus ging 1999 der neue ISO-Standard ISO/IEC 9899:1999, auch als C99 bezeichnet, hervor. C99 löst den Standard ISO/IEC 9899:199409 (C95) ab.

Zu diesem Standard erschienen 2001 ein Technical Corrigendum 1 (TC1), 2004 ein Technical Corrigendum 2 (TC2) und 2007 ein Technical Corrigendum 3 (TC3).

Mit C99 flossen einige aus C++ bekannte Erweiterungen in die Sprache C ein.

Zu den wichtigsten Neuerungen gehören:

  • Unterstützung von komplexen Zahlen durch den neuen Datentyp _Complex und entsprechende Funktionen in der C-Bibliothek.
  • Erweiterung der ganzzahligen Datentypen um einen mindestens 64 Bit breiten Typ long long sowie um Typen mit vorgegebener Mindestbreite wie z.B. int8_t oder uint32_t.
  • Lokale Felder variabler Größe.
  • Einem boolschen Datentyp _Bool.
  • Weiter verbesserte Unterstützung für Internationale Zeichensätze.
  • Erweiterte Unterstützung von Gleitkommazahlen inkl. 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 „//“.

Präprozessortest auf C99-Kompatibilität

#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 
 // C99 kompatibler Quellcode.
 
#endif

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

K&R-C:

Ausgabe(str)
char* str;
{
    printf("%s\n", str);
}
 
main()
{
    Ausgabe("Hallo Welt!");
    return 0;
}

C90/C95:

#include <stdio.h>
 
/* Das Argument darf nicht geändert werden. */
void Ausgabe(const char *const str)
{
    printf("%s\n", str);
}
 
main()
{
    Ausgabe("Hallo Welt!");
    return 0;
}

C99:

#include <stdio.h>
 
// Das Argument ist Konstant und es gibt keinen Alias.
void Ausgabe(const char *const restrict str)
{
    printf("%s\n", str);
}
 
int main(void) // der Rückgabetyp muss angegeben werden
{
    Ausgabe("Hallo Welt!");
    // ''return 0;'' muss nicht mehr angegeben werden.
}

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • ISO/IEC 9899:1999 — изд.2 XL JTC 1/SC 22 Языки программирования. Си Изменения и дополнения: – ISO/IEC 9899:1999/Cor.1:2001 (изд.1 JTC 1/SC 22) – ISO/IEC 9899:1999/Cor.2:2004 (изд.1 JTC 1/SC 22) – ISO/IEC 9899:1999/Cor.3:2007 (изд.1 JTC 1/SC 22) раздел 35.060 …   Стандарты Международной организации по стандартизации (ИСО)

  • ISO/IEC 9899:1990 — Inhaltsverzeichnis 1 K R C 2 C89, C90 3 C95 4 C99 5 Beispiele für den Unterschied zwischen verschiedenen Fassungen der Sprache C 6 Weblinks …   Deutsch Wikipedia

  • ISO-C — Inhaltsverzeichnis 1 K R C 2 C89, C90 3 C95 4 C99 5 Beispiele für den Unterschied zwischen verschiedenen Fassungen der Sprache C 6 Weblinks …   Deutsch Wikipedia

  • ISO 9899 — C (langage) Pour les articles homonymes, voir C. C …   Wikipédia en Français

  • List of ISO standards — This is a list of ISO standards that are discussed in Wikipedia articles. For a list of all the more than 16,000 ISO standards (as of 2007), see the [http://www.iso.org/iso/en/CatalogueListPage.CatalogueList ISO Catalogue] .About 300 of the… …   Wikipedia

  • Liste der ISO-Normen — Anmerkung: Die Liste erhebt keinen Anspruch auf Vollständigkeit oder Aktualität, sie ist ständig mit der Webseite der ISO abzugleichen. Einige wichtige Normen, Standards oder Technische Spezifikationen der ISO sind: ISO 2 Textilien; Bezeichnung… …   Deutsch Wikipedia

  • Си (язык программирования) — У этого термина существуют и другие значения, см. Си. Запрос «Язык программирования Си» перенаправляется сюда; см. также другие значения. Си Класс языка: процедурный Тип исполнения: компилируемый Появился в: 1969 1973 Автор( …   Википедия

  • C-Plusplus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

  • C-plus-plus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

  • C plus plus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”