JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=5bd361c37a1132ef7c363c70eab22eaeMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

exit in g++ (was: "break in g++")

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Terep
Mini JLI'ler



Anmeldedatum: 02.05.2008
Beiträge: 18
Wohnort: Hannover
Medaillen: Keine

BeitragVerfasst am: 04.01.2009, 19:47    Titel: exit in g++ (was: "break in g++") Antworten mit Zitat

Hallo Leute

Ich progge mit dem g++ Compiler. Übertrage ich Quellcode aus einem Buch, kennt g++ nicht das "break". Nach meiner Vermutung wird es bei microsoft in der windows.h hinterlegt sein.

Wer weiß, welche lib ich includen muss, damit ich break mit dem g++ nutzen kann?

Terep Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.01.2009, 20:54    Titel: Antworten mit Zitat

welches break meinst du? das in while/for-loops oder das in switches oder eine funktion wie __debugbreak()? die ersten beiden beschreiben das keyword break, das ist ein elementares c++-keyword und bestandteil der sprache. Wenn er bei einem solchen break Fehler anzeigt, liegt das garantiert an irgendwelchem Fehlern im umgebenden Code, zeig am besten mal ein paar zeilen vor und nach dem Fehler. Funktionen wie __debugbreak() oder __builtin_trap() sind compilerspezifisch und daher nur in bestimmten Versionen enthalten, aber
CPP:
break
ist c++-bestand

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
gombolo
Mini JLI'ler



Anmeldedatum: 25.11.2006
Beiträge: 8

Medaillen: Keine

BeitragVerfasst am: 05.01.2009, 07:11    Titel: Antworten mit Zitat

Rolling Eyes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Terep
Mini JLI'ler



Anmeldedatum: 02.05.2008
Beiträge: 18
Wohnort: Hannover
Medaillen: Keine

BeitragVerfasst am: 05.01.2009, 20:24    Titel: Was das Programm macht? Ich denke, du kriegst es raus. Antworten mit Zitat

Sorry, ich meinte exit() und nicht break

Das Listing ist für mich ein Kleinod und kommt aus meinem neuesten Buch. Den Code gibt es in verschiedenen Versionen. Es läuft einwandfrei wenn ich exit() entferne.
Code:

#include  <fstream>
#include  <string>
#include  <iomanip>
#include  <iostream>
using namespace std;

int main(int argc, char *argv[])
{
   if (argc != 2) {
      cerr << "usage: " << argv[0] << " dateiname" << endl;
      exit(1);
   }
   int l = 0;
   string zeile;
   ifstream eing(argv[1]);

   if (eing) // konnte Datei erfolgreich geöffnet werden
      while (getline(eing, zeile))
         cout << setw(5) << ++l << "  " << zeile << endl; // \n nicht in zeile
}


Terep Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 05.01.2009, 22:08    Titel: Antworten mit Zitat

Du könntest das exit einfach durch ein
CPP:
return 1;

ersetzen.

Wahlweise tippe ich auf ein
CPP:
#include <stdlib.h>

Das müsste es unter dem g++ ans laufen kriegen.
Gruß

FH
_________________
goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 06.01.2009, 11:02    Titel: Antworten mit Zitat

achso du meinst exit ;P

wie FH sagte is exit in <stdlib.h> definiert, allerdings solltest du zum einbinden <cstdlib> benutzen, da das standardkonform ist und keine protabilitätsprobleme aufbringt (auf modernen Platformen gibt es <stdlib.h> als solche nicht mehr!). Außerdem ist exit dort in dem namespace std enthalten:
CPP:
#include <cstdlib> // ohne .h und mit c davor
int main()
{
    std::exit(0);
}
in der main-funktion sind exit(n) und return n übrigens absolut identisch, ich würde wegen lesbarkeit exit aber bevorzugen wenn ich eine atexit() funktion definiere, d.h. wenn ich dem compiler eine funktion bereitstelle, die nach beendung des programms aufgerufen werden soll. Ansonsten return, weils so schön leuchtet Rolling Eyes

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fkrauthan
Junior JLI'ler


Alter: 33
Anmeldedatum: 10.04.2005
Beiträge: 96
Wohnort: Germering
Medaillen: Keine

BeitragVerfasst am: 06.01.2009, 13:04    Titel: Antworten mit Zitat

das mit atexit ist total egal ob du da exit oder return her nimmst. Die in atexit Funktion wird auch bei einem Return aufgerufen.
_________________

"Die Codeschleuder" das Spieleprogrammierer Magazin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Terep
Mini JLI'ler



Anmeldedatum: 02.05.2008
Beiträge: 18
Wohnort: Hannover
Medaillen: Keine

BeitragVerfasst am: 06.01.2009, 18:15    Titel: Schnelle und gute Antworten Antworten mit Zitat

mit return (1) klappt es fehlerfrei wie auch mit dem Einbinden von
#include <stdlib.h> bzw. #include <cstdlib>

Unter C wurden die include-Dateien mit der Endung .h verwendet.
Aus Kompatibilitätsgründen hat man die "alten" libs nicht erneuert.

Man soll die Endung .h weglassen und dafür das c an den Anfang setzen
eben aus stdlib.h die cstdlib machen.

Danke für die prompten Erläuterungen.

bis denn

Terep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 07.01.2009, 15:54    Titel: Antworten mit Zitat

fkrauthan hat Folgendes geschrieben:
das mit atexit ist total egal ob du da exit oder return her nimmst. Die in atexit Funktion wird auch bei einem Return aufgerufen.
genau deswegen hab ich auch geschrieben das exit(n) und return n übrigens absolut identisch sind und das ich bei atexit nur wegen lesbarkeit exit bevorzugen würde ;P

terep: jep, du kannst übrigens auch return 1 schreiben (ohne die klammer), das ist zwar syntaktisch vollkommen egal, spiegelt aber den C++-Charakter wieder, da die Klammerversion vom Code her meist auf C-Wurzeln hinweißt ;)

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum