Moderne C-Programmierung - Kompendium und Referenz

von: Helmut Schellong

Springer-Verlag, 2005

ISBN: 9783540285458 , 280 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 6,99 EUR

Mehr zum Inhalt

Moderne C-Programmierung - Kompendium und Referenz


 

8 Der neue C-Standard C99 (S. 47-48)

8.1 Vorwort

Am 1.Dez.1999 wurde der zur Zeit aktuelle C-Standard C99 Ansi/Iso/Iec 9899:1999 verö.entlicht. Der Abstand von 10 Jahren zum Vorgänger Ansi-C89 wurde absichtlich so gewählt/eingehalten.

Der alte Standard von 1989/90 ist laut C99 offziell ungültig. Verschiedene neue Merkmale des C99 wurden an einigen anderen Stellen dieses CBuches mit Hilfe des Begriffes C99 markiert.

Dieser neue Standard wurde bei weitem nicht so begeistert aufgenommen von der C-Gemeinde wie C89/90, aber dennoch bietet er einige erfreuliche Neuerungen, die stellenweise sogar ein neues Konzeptdenken möglich machen.

Die tollsten Neuheiten sind VL-Arrays (VLAs) und long long als 64bit-Integer- Typ. Diese Merkmale erö.nen wirklich neue Perspektiven und Konzepte bei der Programmierung und Problemlösung.

Compiler wie der gcc beherrschten schon lange zuvor solche Merkmale, allerdings gcc-spezi.sch, nicht (vollständig) konform mit C99. Die anderen Neuerungen sind nur weitere Optimierungshilfen, Vervollständigungen, Präzisierungen und kleinere bis mittlere Annehmlichkeiten.

8.2 Neue Merkmale

8.2.1 Kurzbeschreibungen

//
Zeilenkommentar. Viele C-Compiler akzeptieren dies schon länger.

inline
Funktions-Kode wird überall direkt eingesetzt, wie Makroersetzungen. Jetzt auch in C; C++ hat dies Schlüsselwort von Anfang an.

restrict
Typ-Qualifizierer, wie const und volatile.

Optimierungsmöglichkeit: Privater Speicherbereich für eine Adressenvariable. Der Programmierer garantiert dem Compiler, daß zwei oder mehr Adressenbereiche nicht überlappen, auf die mittels jeweils zugeordneter Adressen-Variable zugegri.en wird. Wenn eine Adressen-Variable solchermaßen:

int * restrict p;

qualifiziert ist, dann soll jeder Zugri. auf ein Objekt mittels der in p enthaltenen jeweiligen Adresse im jeweiligen Gültigkeitsbereich eben nur mittels p erfolgen, niemals auch mit anderen (Adressen-)Variablen. Zwei Pointer können sich beispielsweise ein und dasselbe Array teilen, sollen sich dann aber bei ihren Zugri.en nicht ins Gehege kommen. Man kann sagen, p hat exklusive Rechte, und der p zugeordnete Speicher ist ein restriktiver Bereich.