Mailinglist Archive: opensuse-programming-de (209 mails)

< Previous Next >
Re: Socket-Programmierung (fast Anfänger)
  • From: Ralf Corsepius <corsepiu@xxxxxxxxxxxxxx>
  • Date: 11 Feb 2003 07:07:50 +0100
  • Message-id: <1044943670.2483.80.camel@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
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 <lists@xxxxxxxxxx> [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.



< Previous Next >