Am Die, 2003-02-11 um 04.35 schrieb David Haller:
Hallo,
On Tue, 11 Feb 2003, Ralf Corsepius wrote:
Am Die, 2003-02-11 um 00.29 schrieb David Haller:
On Mon, 10 Feb 2003, Philipp Thomas wrote:
David Haller
[10 Feb 2003 12:19:49 +0100]: ==== main() {/* ... */ return 0;} ==== was ich fuer nicht gut halte, selbst wenn das vom Standard gedeckt wird.
Das wird selbst vom Standard nur zum Teil abgedeckt. Der sog. implizite int (alles was keinen expliziten Typ hat ist 'int') ist nach ISO C99 nicht zulässig. c99 != c89 != knc.
s/c\./r/;
Ok. Ich bleibe also dabei, alles, das nicht explizit den richtigen return-type angibt, als "schlampig" zu betrachten :) Nein, die Sprache hat sich geändert - implizite int's als schlampig zu betrachten ist Pedanterie.
"So, I'm a pedant? So what?" Steht Dir frei zu denken, was Du willst ;)
Seit wann ist das beim Programmieren eine schlechte Eigenschaft?
Nebenbei bemerkt: Wann ist's dir lieber, dass es "knallt"? Schon beim Kompilieren oder erst zu Laufzeit? Es knallt eben nicht. Implizite int-Return-Decls sind syntaktisch korrektes C mit genau definiertem Verhalten und deshalb weder unsicher noch fehlerhaft.
Dass es c99 anders zu definieren scheint, wäre eine Inkompatibilität zwischen einem zukünftigen Standard [1] und seinen Vorgängern, mehr aber auch nicht.
[1] denk z.B. mal an den Kernel.. Willst du, dass der erst zur Laufzeit die "Panic" bekommt, oder eher, dass schon beim Kompilieren ein Fehler kommt? Schau dir mal genau an, was gcc mit impliziten int decls macht: Warnungen mit -Wall, keine Warnungen ohne -W-Flags, keine Errors!
Ralf [1] Selbst gcc-3.2.x implementiert c99 nur teilweise, gcc-2.9x praktisch gar nicht.