Hallo, On Mon, 10 Feb 2003, Michael Matz wrote:
On Mon, 10 Feb 2003, David Haller wrote:
Ich wuerde den K&R empfehlen, und den Stroustrup fuer C++. Die fand ich recht leserlich...
Also K&R ... ich weiss nicht. Der K&R Stil ist schon recht obsolet ;)
NACK! "obsolet" (in einer Art "veraltet", dass es nicht mehr verwendbar ist) ist das Buch garantiert nicht.
Auf was beziehst du den "Stil"? (ich hab hier die 2nd Edition mit dem "ANSI C" auf dem Cover im Regal.)
[ ] auf die "Sprachebene"? Bis auf ein paar Details vielleicht, die seit der 2ten Auflage geaendert wurden (C'99) ist alles gueltig. Insbesondere sind die Grundlagen (um die's hier ja v.a. geht(!)) nach wie vor aktuell.
Alles klar. Wie gesagt, ich kenne das Buch nicht, und wenn es ANSI C behandelt ist alles gut. Ich stiess mich aussschliesslich an dem "K&R", d.h. der traditionelle C-Stil, prototypen-los, mit etwas anderem promotion-Regeln als ANSI usw. Und der _ist_ obsolet.
Ok.
Argh! Wie war das mit den Prototypen noch? Jedenfalls: in der 2nd Ed. werden Funktionen konsequent in folgendem Stil typisiert:
blubb foo(int bar, bla * baz);
Schoen. Und die Definitionen der Funktionen? [..] ? (erstes ist K&R, zweites ANSI).
K&R, 2nd Ed. ISBN 0-13-110362-8, Seite 64: ==== void itoa(int n, char s[]) { int i, sign; /* ... */ } ==== Also ANSI. Leider gibt's aber folgendes: ==== main() { /* ... */ return 0; } ==== was ich fuer nicht gut halte, selbst wenn das vom Standard gedeckt wird. Hab vor ner Weile mal code kompilieren wollen, wo IIRC teilweise davon ausgeganten wurde, dass bei sowas der Rueckgabetyp int ist, z.T. aber auch davon, dass er void ist[1]. *argl*
Explizite Deklarationen und Initialisierungen sind IMO die einzig saubere Variante...
Hier wird nichts initialisiert.
Ja, hier nicht. Aber generell. Insbesondere Pointer... -dnh [1] zu erkennen an den Returns, mal war's: foo() { return; } und ein andermal bar() { return 0; } und das im gleichen Programm wohlgemerkt (wenn auch nicht in einer Datei). -- If you don't see why, please stay the fuck away from my code. -- Paul "Rusty" Russel, in /usr/src/linux/Documentation/DocBook/kernel-locking.tmpl