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 ]
010
17.07.2004, 12:18 Uhr
0xdeadbeef
Gott
(Operator)


Der Code dürfte die Funktionsweise verdeutlichen:

C++:
#include <stdio.h>
#include <stdlib.h>

void f() {
  puts("f");
  exit(0);
}

int main() {
  f();
  puts("main");
}


Übrigens sollte man exit nie in C++ benutzen, weil es sich mit dem exception handling in die Haare kommt. Da benutzt man besser etwas der Art:

C++:
class do_not_catch : public std::exception { };
throw do_not_catch();


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 17.07.2004 um 12:18 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
17.07.2004, 12:28 Uhr
typecast
aka loddab
(Operator)


Allerdings sollte man die doch in der main()-Methode abfangen und dass Programm im catch-Block mit return beenden um einen Rueckgabewert setzen zu koennen.
Den koennte man der Exception mitgeben...
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
17.07.2004, 13:08 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von 0xdeadbeef:
Übrigens sollte man exit nie in C++ benutzen, weil es sich mit dem exception handling in die Haare kommt.


Hallo,
kannst du das genauer schildern?
Ich weiss nur das unter Windows nach der Rückkehr aus main,intern exit mit dem Rückgabewert von main als Parameter aufgerufen wird.Ich seh jetzt nicht wo da für das Exceptionhandling der Unterschied liegen soll .
Bei Multithreadingprogrammen unter Windows ist mir bekannt dass die geläufige CreateThread Funktion für den neuen Thread keinen SEH-Rahmen anlegt und es somit Probleme mit z.B. signal() gibt.

Wäre interessant zu wissen wo genau das Problem mit exit liegt.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
17.07.2004, 13:25 Uhr
virtual
Sexiest Bit alive
(Operator)


Naja, man braucht ja noch nicht mal bis zum Exceptionhandling zu gehen:
Dadurch, daß exit ne Funktion ist, werden die Destruktoren von automatischen Objekten nie aufgerufen:

C++:
#include <iostream>
struct X
{
   X(){std::cout<<"ctor"<<std::endl; }
   ~X() { std::cout<<"dtor"<<std::endl; }
}

int main()
{
   X x;
}


gibt aus:

C++:
ctor
dtor


Aber

C++:
#include <iostream>
struct X
{
   X(){std::cout<<"ctor"<<std::endl; }
   ~X() { std::cout<<"dtor"<<std::endl; }
}

int main()
{
   X x;
   exit(0);
}


gibt aus:

C++:
ctor


Zwar dürfte das in der Regel nicht allzutragisch sein, aber manchmal schon, wenn im dtor Resourcen freigegeben werden, die nicht durch ein normales exit abgedeckt werden.
--
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
014
17.07.2004, 14:57 Uhr
mike
Pinguinhüpfer
(Operator)


@virtual: hmm. meinst du beim letzten Sample class und dass der Dekonstruktor nicht mehr aufgerufen wird? Mit struct versteh ich das nicht ganz
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
17.07.2004, 15:10 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
struct und class ist in C++ das Gleiche.
Der einzige Unterschied besteht darin dass die Eigenschaften einer struct per default public sind und bei class private.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
17.07.2004, 15:22 Uhr
mike
Pinguinhüpfer
(Operator)


Ohhhh. Das hab ich gar nicht gewusst Habe bis jetzt im Glauben gelebt, dass C++ auch structs kann - aber dass sie das Gleiche machen ist mir neu - kewl
Danke,

mfg
Ich geh besser nochmal
--

Dieser Post wurde am 17.07.2004 um 15:22 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
17.07.2004, 15:24 Uhr
Spacelord
Hoffnungsloser Fall


Im Grunde sind (C++)structs nur für ne "Abwärtskompabilität" zu C gedacht.
C++ kommt mit ner C Struktur klar,umgekehrt sieht das anders aus.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
17.07.2004, 15:31 Uhr
mike
Pinguinhüpfer
(Operator)


Hmm. Verstehe. Da steht mir einiges an Arbeit bevor
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
17.07.2004, 22:05 Uhr
Hans
Library Walker
(Operator)



Zitat von Spacelord:
Hi,
struct und class ist in C++ das Gleiche.
Der einzige Unterschied besteht darin dass die Eigenschaften einer struct per default public sind und bei class private.

MfG Spacelord

Hi,
das ist mir auch neu. Naja, ich hab mich bisher auch noch nicht wirklich mit C++ und den Unterschieden zu C befasst. Aber soweit wie ich mich bisher mit C++ auskenne, war struct halt nur für die Strukturierung von Daten zuständig, so wie in C auch. class dagegen dient zur definition von Klassen, die aber keine Datenstrukturen sind. Naja, vielleicht auf einem sehr hohem, rein akademisch- theoretischem level... Klassen kenn ich als die Grundkonstruktion in denen neben Datenstrukturen (struct) auch die Funktionen definiert werden, die mit diesen Daten arbeiten dürfen. Allerdings müssen diese dennoch separat definiert werden.
Soweit meine redundanten C++ kenntnisse. Hab da wahrscheinlich irgendwas noch nicht wirklich verstanden, oder hat sich an der Theorie seit ca. 1995 herum was geändert?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
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: