Hi, 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.
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? blubb foo (bar, baz) int bar; bla *baz; { /* ... */ } oder blubb foo (int bar, bla *baz) { /* ... */ } ? (erstes ist K&R, zweites ANSI).
In C++ sind "main()" und "main(void)" exakt dasselbe (also ja zu deiner Frage).
Jep. AFAIR ist 'foo()' implizit ein 'foo(void)'.
Wie gesagt, nur in C++, nicht C.
Man beachte aber, das C dies anders sieht: dort gilt "main()" als "Anzahl und Type von Parametern unbekannt", und "main(void)" als "exakt 0 Parameter".
Und letzteres ist IMO deutlich vorzuziehen. s.o.
In C kann man das eine dem anderen nicht vorziehen, da beide _nicht_ aequivalent sind. Entweder braucht man das eine oder das andere, persoenliche Preferenzen aendern dies nicht.
Explizite Deklarationen und Initialisierungen sind IMO die einzig saubere Variante...
Hier wird nichts initialisiert. Ciao, Micha.