Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » ANSI C - die main Geschichte

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
16.07.2004, 17:45 Uhr
~mike
Gast


Hi!
Ich versuche gerade C bzw. Systemprogrammierung zu lernen. Was mir aufgefallen ist: Der Autor verwendet folgeden Programmaufbau:

C++:
int main(void)
{
  exit(0);
}



Wann wendet man return 0 - wann exit(0) an? Kommt das aufs Gleiche?

Danke im Voraus!!!
mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.07.2004, 18:02 Uhr
Pablo
Supertux
(Operator)


Geschmackssache, würde ich sagen. Früher gab es kein int main, sondern void main, ich vermute, irgendwie musste man der shell mitteilen, dass das programm mit oder ohne Fehlern beendet wurde.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.07.2004, 19:17 Uhr
~mike
Gast


Hi Pablo!
Das ist mir schon klar. Aber den Unterschied exit(0) und return 0 verstehe ich nicht ganz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.07.2004, 19:21 Uhr
Pablo
Supertux
(Operator)


Ich glaube, es gibt keinen, sicher bin ich aber nicht.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.07.2004, 19:37 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von Pablo:
Geschmackssache, würde ich sagen. Früher gab es kein int main, sondern void main, ich vermute, irgendwie musste man der shell mitteilen, dass das programm mit oder ohne Fehlern beendet wurde.

Tatsächlich? Also IMHO war main niemals void...
Der Unterschied zwischen exit und return ist ja augenscheinlich der, das return eine Anweisung und exit eine Funktion ist. Speziell in main verwendet, gibt es hier keinen semantischen Unterschied. Gemäß ANSI Standard (Abschnitt 5.1.2.2.3 für Fetischisten) ist ein return in main gleichbedeutend mit dem Aufruf von exit. In exit werden verschiedene Operationen ausgeführt:
1. Zunächst werden die mittels atexit registrierten AtExit Handler abgearbietet
2. Alle gepufferten, in FILEs geschriebenen Daten werden geflsucht.
3. Alle offenen Dateien werden geschlossen (sieht sogar der Standard vor, ist also nicht OS abhängig!)
4. Dateien, die mit tempfile erzeugt wurden, werden gelöscht.
5. Die Kontrolle wird ans OS zurückgegeben,


Bearbeitung:

Nicht zuverwechseln ist die Funktion mit _Exit (ja, habe ich richtig geschrieben): die Überspringt Schritt 1, ob die Schritte 2-4 ausgeführt werden ist OS abhängig.




Bearbeitung von typecast:
edit-Tag korrigiert

--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 16.07.2004 um 21:55 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.07.2004, 19:54 Uhr
Pablo
Supertux
(Operator)


In der Uni habe ich einmal aus Spaß die "C-Bibel" ausgeliehen, das Buch ist so alt naja, im Buch haben sie selber void main benutzt, soweit ich mich erinnern kann.

@virtual: Und return 0; beim main macht diese ganze Sachen gar nicht?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.07.2004, 20:24 Uhr
virtual
Sexiest Bit alive
(Operator)


RTFP: Steht doch oben: return und exit sind gleichbedeutend in main.
Die Tatsache, daß (auch moderne) Bücher void verwenden sollte nicht darßüber hinwegtäuschen, daß es eigentlich immer ein int sein sollte. Das war schon immer so.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.07.2004, 22:17 Uhr
~mike
Gast


Danke für die Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.07.2004, 22:53 Uhr
ao

(Operator)


return beendet die aktuell laufende Funktion (im Falle von main damit das ganze Programm).

exit beendet in jedem Fall das Programm, auch wenn es in einer tieferen Schachtelungs-Ebene aufgerufen wird.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
17.07.2004, 10:52 Uhr
~mike
Gast


Hi!
Also ich hab mir im BSD Src ein paar Programme angeschaut - die meisten werden mit return 0 abgeschlossen - das wird wohl weiter verbreitet sein. Herold bringt jetzt im September die 3te Auflage von "Linux/Unix Systemprogrammierung" raus - eventl. hat sich da einiges geändert, da die 2te aus dem Jahre 1999 stammt.

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: