JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

void main(void) und iostream.h

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Clythoss
Junior JLI'ler


Alter: 44
Anmeldedatum: 04.05.2005
Beiträge: 64
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 17.03.2006, 04:16    Titel: void main(void) und iostream.h Antworten mit Zitat

Hallo. Ich bin ja eigentlich eher C Coder, hab mich aber jetzt entschlossen C++ zu lernen. Ich hab anfangs mit diesem Tutorial gearbeitet : http://tutorial.schornboeck.net/inhalt.htm , da es mir aber zu anstrengend war auf dem Bildschirm hin und her zu switchen hab ich mir das Buch passend zum Forum besorgt: JLI DirectX 9 und Visual C++. Soweit ist nach alles ok. Nun gibt es in dem Tutorial aus dem Netz eine Passage die sich da nennt " Die größten C++ Lügen." Hier mal 2 Sachen daraus:

Zitat:
void main()
Ich weiß nicht woher das Gerücht kam, vermutlich daher, dass einige Leute den alten K&R-Code missinterpretierten, bei dem wenn kein Rückgabetyp bei einer Funktion angegeben wurde automatisch int angenommen wurde. Aber in zahlreichen Büchern und Tutorials wird erklärt, dass void main() legales C++ sei, dass ist aber falsch! Es gab keinen C++-Standard, der je void main für legal erklärte. Die main-Funktion muss immer int zurückgeben!


Zitat:
iostream.h
Vor dem C++-Standard (C++98) hatten alle Header der Standard-Library das aus C bekannte .h als Suffix, aber mit dem C++-Standard wurde das .h-Suffix weggelassen und die Standard-Library in den Namespace std verpackt. Denn die neuen Header beinhalten signifikante Änderungen, die teilweise unvereinbar mit den alten Headern sind. Leider wird in zahlreichen Büchern und Tutorials immer noch die alte Methode gelehrt.


Das wiederspricht aber dem was im Buch steht, wo ja eben beides so gemacht wird. Was ist denn nun richtig?
_________________
Derzeitiges Projekt : Wing Fusion
Status: Es geht vorwärts...

-------------------------------------------------------
E=MC²+1W6
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 17.03.2006, 07:01    Titel: Antworten mit Zitat

Oha, haltet Patrick fest. Twisted Evil

Also so wie das im Buch steht ist es falsch, bzw. nicht mehr zeitgemäß. Die *.h - Standardheader sind alle veraltet und sollten nicht mehr verwendet werden.

Die Funktion 'void main(void)' gibts in diesem Sinne überhaupt nicht (mehr). Ein aktueller Compiler sollte da jedenfalls sofort meckern.
Richtig ist:
CPP:
int main(void)
{
//Programm
//...

//Keine Probleme bis hier her
return 0;
}


Bzw.:
CPP:
int main(int argc, char** argv)
{
//Programm
//...

//Keine Probleme bis hier her
return 0;
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 17.03.2006, 09:43    Titel: Antworten mit Zitat

Es ist tatsächlich so, dass der C++-Standard nur das zuläßt, was GreveN beschreibt. Der return Wert am Ende muss übrigens nicht sein.

Visual C++ erlaubt aber in allen Varianten (VC6, VC2002, VC2003, VC2005), auch:

CPP:
void main(void)
{
}


Das ist kein Standard C++, ob es *falsch* ist, ist eine esoterische Frage.

Christian


Zuletzt bearbeitet von Christian Rousselle am 01.05.2006, 20:24, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 17.03.2006, 10:16    Titel: Antworten mit Zitat

In der dritten Ausgabe des Buches "JLI - Spieleprogrammierung" werden meines Wissens die Standard-Libraries standardkonform ohne .h Suffix eingesetzt.
Außerdem geben alle Mainfunktionen int zurück.

Laut MUT sollte es ca. heute ercheinen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 18.03.2006, 00:35    Titel: Antworten mit Zitat

Wobei man anmerken sollte, dass der Compiler auf der Buch CD(vc6) afaik nur *.h bei Standard-Headern zulässt, von daher ist es schon sinnig bzw. anfängerfreundlich dass es auch im Buch so beschrieben ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 18.03.2006, 08:13    Titel: Antworten mit Zitat

So gesagt Visual C++ 2005 hat gar keinen "iostream.h" Header mehr nur
noch "iostream". Dazu wird im Buch noch FILE benutzt obwohl ich
dir eher zu streams raten würde.(Was streams angeht ist Patrick ein lexicon Wink ).
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 18.03.2006, 08:19    Titel: Antworten mit Zitat

Confused

/edit by TLoP: Bitte nur aussagekräftigere Posts der Öffentlichkeit zugänglich machen...
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik 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