C
C ist eine universelle Programmiersprache in der auch hardwarenah programmiert werden kann, ursprünglich als eine Art maschinenunabhängiger Makroassembler gedacht. C ist neben Assembler die bei Mikrocontrollern am häufigsten verwendete Programmiersprache, wird aber auch außerhalb dieses Feldes häufig eingesetzt, etwa in der Anwendungs- und System-Programmierung (der Linux-Kernel ist in C geschrieben).
Die Entstehung von C hängt sehr mit der Entwicklung von Unix zusammen. Dennis Ritchie arbeitete Anfang der 70er bei Bell Laboratories (heute AT&T) an diesem neuen Betriebssystem. Ursprünglich wurde in Assembler programmiert, aber später wurde das gesamte System neu in der ersten Version von der Programmiersprache C implementiert, weil C Hardware-unabhängig(er als Assembler) ist und ein Compiler fast auf jedem System existiert oder leicht portiert werden kann.
Sprachstandards
Vor 1989 gab es keine standardisierte Sprache C, nur den de-facto Standard des K&R Buches "The C Programming Language". Dieser "Standard" unterschied sich noch sehr von der aktuellen Sprache:
/* K&R C */
/* Argumente wurden anders definiert, es gibt keine Prototypen */
print(str)
char *str;
{
printf("%s\n", str);
}
/* es wird implizit int angenommen, void gibt es nicht */
main()
{
print("Hallo Welt!");
return 0;
}
1989 wurde der erste C-Standard verabschiedet, der unter den Namen ANSI C oder C89 lief. Diese Norm galt jedoch nur in den USA, deshalb wurde ein Jahr später C90 von der ISO verabschiedet. C89 und C90 beziehen sich aber auf die selbe Version von C.
Abgesehen von kleinen Verbesserungen vor allem bei den Character Sets im Jahre 1995 bleib C auch gleich.
1999 wurde ein neuer Standard verabschiedet, unter dem Namen C99. Dieser fügte viele neue Dinge hinzu, die oftmals schon von Compilern als Erweiterung bereitgestellt wurden, zum Beispiel inline-Functionen, größere Datentypen, etc. C99 ist fast vollständig kompatibel zu C90, allerdings etwas strenger bei der Auslegung der Sprachelemente.
Als letztes gibt es den aktuellsten Standard C11, der hauptsächlich die C-Library erweiterte und Multithreading, sowie Atomic-Typen hinzufügte.
Streng genommen verlieren mit jeder neuen Version des Standards alle vorherigen Version ihre Gültigkeit. Soweit die Theorie, in der Praxis sieht es allerdings so aus, dass viele Compiler nur C99 unterstützen, wenn überhaupt (Microsofts offizieller C-Compiler ist bekannt dafür etwas aus der Reihe zu tanzen).
C-Tutorials/Einführungen
C ist zwar universell, kann vom Supercomputer bis zum kleinsten 8bit-Controller eingesetzt werden, aber trotzdem unterscheidet sich die Art der Programmierung.
Achtung: Tutorials, vor allem die in deutscher Sprache, sollten teilweise Hinterfragt werden. Oftmals schreibt der Autor einfach nur seine (zum Teil begrenzte) Sicht der Dinge. Es kann nicht schaden, mehr als ein Tutorial zu lesen und bei Diskrepanzen den C-Standard zu Rate zu ziehen.
PC-Programmierung
- The C Programming Language (Orginal K&R für ANSI C) als PDF
- Einführung in C von E. Fischer
- C-Tutorial von H. Schellong
- verschiedene Tutorials zum Download
- Mander: Online-Referenc für C und C++
- tutorials.at auch für Pascal, Basic
- C-Tutorial von C. Wirth
- C programming by S. Holmes
- C und C++ für UNIX, DOS und MS-Windows von J. Dankert, zum download
- online Version des Buchs "C von A bis Z" von J. Wolf
- C-Referenz von M. Leslie/G.Junghanns
- "Einiges zu Ansi-C" von B. Baeumle-Courth
- FAQ der Newsgroup de.comp.lang.c
- Derek M. Jones: The New C Standard e-Buch, engl., >1600 Seiten, mehr als "nur" Einführung/Tutorial
Mikrocontroller-spezifisch
- AVR-GCC-Tutorial
- Download umfangreiches C-Tutorial mit Beispielen für RN-Control und andere AVR-Boards im ZIP-Archiv von A.Seeger
- playground.boxtec.ch verschiedene Tutorials für AVR mit Hardware und I2C Bus (siehe playground / tutorial)
Weitere Links
- C Referenz auf cppreferece.com
- Liste aller Operatoren und ihrer Prioritäten
- C Programming (engl.) Einer von vielen Progammierkursen für C