Enzyklopädie online
( - / 1 2 3 4 5 6 7
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Ä Å Ç É Í Ö Ú Ü Þ Ā Č Đ Ľ Š Ž Ș
ʻ ʿ
V VA VB VC VD VE VI VM VO VR VT VU VW VX VY

Varianten der Programmiersprache C

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

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' von 1978 '(K&R1)' beschrieben ist.

Anker|C89Anker|C90C89, 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 International Organization for Standardization|ISO als Norm 'ISO/IEC 9899:1990' ('C90'), übernommen. Die überarbeitete zweite Auflage des Buches 'The C Programming Language' von 1988 '(K&R2)' reflektiert die Änderungen an der Sprache durch den Standardisierungsprozess.

Viele der bis dato ungenormten Eigenschaften der Sprache wurden einheitlich festlegt, aber auch neue Sprachmittel wie Funktionsprototypen, ein leistungsfähigerer C-Präprozessor, sowie die Möglichkeit zur Deklaration von Konstante (Programmierung)|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|Inkrement- und Dekrement-Operatoren (++, ). Mit der Norm wurde ferner der Umfang der enthaltenen Standard C Library|Standardbibliothek festgelegt.

Bis heute ist C90 die Sprachbasis für alle Derivat (Software)|Weiterentwicklungen der Programmiersprache C, unter anderem auch für das modernere C++, das über Möglichkeiten zur objektorientierte Programmierung|objektorientierten und generische Programmierung|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 benutzen, um auf die individuellen Komponenten des Computersystems zugreifen zu können.

Wichtigste Neuerungen von C90
* Der Funktionsumfang sowie das Verhalten der Funktionen der Standard C Library|C-Bibliothek wurden normiert.
* Ein verbesserter C-Präprozessor|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.
* Unterstützung für 'wide character-' (mehr als 8 Bit Breite) sowie für Multibyte Character Set|Multibyte-Zeichensätze wurde hinzugefügt.

Präprozessortest auf C90-Kompatibilität

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


C95
1995 veröffentlichte die International Organization for Standardization|ISO eine Erweiterung – das Amendment 1 – zur C-Norm, die dann als 'ISO/IEC 9899:1994-09' '(C95)' bezeichnet wurde. Neben Fehlerkorrekturen gab es auch Änderungen am Sprachumfang.Internetquelle | url=http://www.lysator.liu.se/c/na1.html | titel=A brief description of Normative Addendum 1 | autor=Clive D.W. Feather | zugriff=2010-09-12 | sprache=en

Wichtigste Neuerungen von C95
* Verbesserung der Unterstützung von Multibyte- und 'wide character'-Zeichensätzen durch die Standardbibliothek.
* Hinzufügen von Digraph (Informatik)|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

#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' 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'Internetquelle | url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/9899tc1/n32071.PDF | titel=C99 Technical Corrigendum 1
| zugriff=2010-09-22 | format=PDF | sprache=en , 2004 ein 'Technical Corrigendum 2'Internetquelle | url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/9899-1999_cor_2-2004.pdf | titel=C99 Technical Corrigendum 2 | zugriff=2010-09-22 | format=PDF | sprache=en und 2007 ein 'Technical Corrigendum 3'Internetquelle | url=http://www.iec.ch/cgi-bin/getcorr.pl/yab/iso/isoiec9899-cor3%7Bed1.0%7Den.pdf?file=iso/isoiec9899-cor3%7Bed1.0%7Den.pdf | titel=C99 Technical Corrigendum 3 | zugriff=2010-09-22 | format=PDF | sprache=en . C99 inklusive dieser Korrekturen wird informell auch als 'C0X' bezeichnet und bildet die Basis für kommende C-Standards.Internetquelle | url=http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1250.pdf | titel=Offizielle Charta für den C1X Standardisierungsprozess | autor=John Benito | zugriff=2010-09-12 | format=PDF | sprache=en

Mit C99 flossen einige aus C++ bekannte Erweiterungen in die Sprache C ein, zum Beispiel das Schlüsselwort inline und die Möglichkeit, Variablen innerhalb der For-Schleife|for-Anweisung zu deklarieren.

Wichtigste Neuerungen von C99
* Unterstützung von Komplexe Zahl|komplexen Zahlen durch den neuen Datentyp _Complex und entsprechende Funktionen in der Standardbibliothek.
* 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 (Datentyp)|Integer mit exakter Breite spezifiziert, aber als optional bezeichnet – zum Beispiel int32_t.
* Lokale Feld (Datentyp)|Felder variabler Größe.
* Der Boolesche Variable|boolesche Datentyp _Bool. Über einen eigenen Header <stdbool.h> wird für ihn ein Makro namens bool definiert.
* Weiter verbesserte Unterstützung für internationale Zeichensätze.
* Erweiterte Unterstützung von Gleitkommazahlen inklusive neuer mathematischer Funktionen in der C-Bibliothek.
* Aliasing|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


C1X
Das Normierungskommitee WG14 arbeitet zur Zeit '(Stand: September 2010)' an einer Neuauflage des C-Standards mit Arbeitstitel 'C1X', basierend auf dem aktuell gültigen C99-Standard inklusive der 'Technical Corrigenda' TC1, TC2 und TC3 '(C0X)'.

Geplante Neuerungen von C1X
Die Auflistung basiert auf diversen 'Technical Reports'Internetquelle | url=http://www.open-std.org/JTC1/SC22/WG14/www/projects | titel=Projekstatus für C1X | zugriff=2010-09-12 | sprache=en und dem aktuellen Arbeitsdokument zu C1X.Internetquelle | url=http://open-std.org/JTC1/SC22/WG14/www/docs/n1516.pdf | titel=ISO/IEC 9899:201x | format=PDF | zugriff=2010-10-31 | sprache=en | kommentar=nicht-normatives Arbeitsdokument

* 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
* Änderungen an der Standardbilibothek zur Prüfung von Feldgrenzen zur Laufzeit des Programms, um z. B. Pufferüberlauf|Pufferüberläufe wirksamer vermeiden zu könnenInternetquelle | url=http://open-std.org/JTC1/SC22/WG14/www/docs/n1225.pdf | titel=Extensions to the C Library, Part I: Bounds-checking interfaces | format=PDF | sprache=en | zugriff=2010-10-31 | kommentar=Entwurf
* Dynamische Allokation (Informatik)|Speicherallokation in neuen Bibliotheksfunktionen, zum Beispiel strdup und asprintfInternetquelle | url=http://open-std.org/JTC1/SC22/WG14/www/docs/n1337.pdf | titel=Extensions to the C Library, Part II: Dynamic Allocation Functions | format=PDF | sprache=en | zugriff=2010-10-31 | kommentar=Entwurf
* Unterstützung der internen dezimalen Darstellung von Fließkommazahlen gemäß IEEE_754|IEEE 754-2008

Beispiele für den Unterschied zwischen verschiedenen Fassungen der Sprache C
"K&R-C:"

/* Es gibt noch keine Funktionsprototypen. */
Ausgabe( str )
char *str;
{
printf( '%s\n', str );
}

main()
{
Ausgabe( 'Hallo Welt!' );
return 0;
}


"C90"/"C95:"

#include

/* 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

// 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.
}


Einzelnachweise


Weblinks
*Internetquelle | url=http://cm.bell-labs.com/cm/cs/who/dmr/chist.html | titel=The Development of the C Language | autor=Dennis M. Ritchie | zugriff=2010-09-12 | sprache=en
*Internetquelle | url=http://flash-gordon.me.uk/ansi.c.txt | titel=Vorabversion des ANSI C Standards (ANSI X3J11/88-090) vom 13. Mai 1988 | format=TXT | zugriff=2010-09-12 | sprache=en
*Internetquelle | url=http://www.lysator.liu.se/c/rat/title.html | titel=Rationale für C89 | zugriff=2010-09-12 | sprache=en
*Internetquelle | url=http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf | titel=ISO/IEC 9899:1999 (C99) mit TC1, TC2 und TC3 | format=PDF | zugriff=2010-09-12 | sprache=en | kommentar=nicht-normatives Arbeitsdokument
*Internetquelle | url=http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf | titel=Rationale für C99, Revision 5.10 | format=PDF | zugriff=2010-09-12 | sprache=en
*Internetquelle | url=http://clc-wiki.net/wiki/C_resources:Compilers | titel=Liste von Compilern mit Informationen zur C99-Konformität | zugriff=2010-10-07 | sprache=en


Quelle:
Seitentitel:Varianten der Programmiersprache C
Herausgeber: Wikipedia, Die freie Enzyklopädie
Autor(en): Wikipedia-Autoren, siehe Versionsgeschichte
Bearbeitungsstand: 2010-10-30T23:52:16Z
Permanentlink: de.wikipedia.org/w/index.php?title=Varianten_der_Programmiersprache_C
Datum des Abrufs: 25. Januar 2011, 12:00 UTC
GNU Free Documentation License
to main page AboutTop 10DictionariesFeedback top of page

minecraft forum
© 2008 Wörterbuch XHTML | CSS
1.8.11