Privacy Policy Cookie Policy Terms and Conditions Varianten der Programmiersprache C - Wikipedia

Varianten der Programmiersprache C

aus Wikipedia, der freien Enzyklopädie

Inhaltsverzeichnis

[Bearbeiten] 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 wie sie in der ersten Auflage ihres Buches The C Programming Language erschien.

[Bearbeiten] 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 Basis 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 6-jä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 ISO als Norm ISO/IEC 9899:1990 (C90), übernommen.

Viele der bis dato ungenormten Eigenschaften der Sprache wurden einheitlich festlegt, aber auch neue Funktionalitäten wie Funktionsprototypen, ein leistungsfähigerer Präprozessor, sowie die Möglichkeit zur Deklaration von Konstanten, wurden in das Sprachkonzept integriert. 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, zumindest theoretisch, 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.

[Bearbeiten] 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:1990 (C90) ab.

Zu diesem Standard ist ein Technical Corrigendum (TC) TC1 erschienen. Dieses Dokument TC1 ist frei verfügbar.

Mit C99 fließen auch aus C++ bekannte Erweiterungen in die C-Norm ein.

Zu den wichtigsten Neuerungen gehören:

  • Zulassen des aus C++ bekannten Zeilenkommentars "//"
  • Datentypen long long int und unsigned long long int, die mindestens 64 Bit groß sein müssen; boolescher Datentyp _Bool; Datentyp _Complex zur Behandlung komplexer Zahlen
  • Ganzzahlige Datentypen mit vorgegebener Mindestbreite (1, 2, 4 oder 8 Byte)
  • Alias-freie Zeiger (Schlüsselwort restrict)
  • Lokale Felder variabler Größe
  • Frei platzierbare Deklaration von Bezeichnern (in C90 durften diese nur am Anfang eines Blocks stehen)
  • Inline-Funktionen
  • Verbot des "impliziten int"; Verbot impliziter Funktionsdeklarationen
  • Alternative Schreibweisen für Operatoren, wie beispielsweise and anstelle von &&
  • hexadezimale Fließkommakonstanten. Ein- und Ausgabe in scanf() und printf() über "%a" und "%A"
  • Präprozessor-Makros mit variabler Parameteranzahl
  • Erweiterte Bibliothek (z. B. complex.h: csin(), math.h: sinf() sinf() erf() tgamma())

[Bearbeiten] 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:

#include <stdio.h>

void Ausgabe(char* str)
{
    printf("%s\n", str);
}

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

C99:

#include <stdio.h>

void Ausgabe(char* str)
{
    printf("%s\n", str);
}

int main(void) // der Rückgabetyp muss angegeben werden
{
    Ausgabe("Hallo Welt!");
    // return 0; muss nicht mehr angegeben werden.
}
Andere Sprachen

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -