JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Problem mit "rekusiven Include-Aufrufen" ?

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



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 07.01.2004, 13:46    Titel: Problem mit "rekusiven Include-Aufrufen" ? Antworten mit Zitat

hi!

Also ich hab ein Problem, ein etwas großes und für mich auch unverständliches Problem:

Wenn ich mein Projekt mit VC6.0 kompilieren will, dann kommen unterschiedliche Fehler:

- Zum ein kommt der Fehler "fatal error C1033: Programmdatenbank '...\debug\vc60.pdb' laesst sich nicht oeffnen", der aber verschwindet, sobald ich diese Datei lösche.

- An dessen Stelle tritt dann ein folgender Fehler auf: "fatal error C1063:
Fehler beim Ausführen von cl.exe." Die Fehlerbeschreibung hierfür lautet:

"Schwerwiegender Fehler C1063
Compiler-Beschränkung: Stack-Überlauf des Compilers

Das Programm war zu komplex und verursachte einen Stapelüberlauf im Compiler. Dieser Fehler kann das Resultat von rekursiven Include-Aufrufen sein."

Das eine Problem ist jetzt, dass ich nicht ganz versteh, was das bedeutet.
Dann gibts aber zum Glück noch Tipps:

"Tips

Vereinfachen Sie das Programm, indem Sie es in kleinere Quelldateien aufteilen, und kompilieren Sie erneut. "

Da kommt schon das nächste Problem: Wie vereinfache ich mein Programm? Soll ich fuer Jede Funktion eine eigene .cpp Datei anlegen?

Kennt jemand von euch den Fehler?
Kann ich irgendwie die Größe des Stacks des Compilers erhöhen?

Noch ein Paar Anmerkungen:

Mein Projekt hat eine Headerdatei, in der so verschiedene Includes, wie z.B. <string>, <vector> oder <stdio.h> drin vorkommen. Diese Header Datei wird von so ziemlich jeder anderen Headerdatei Includiert.
Dann hab ich mehrere kleinen Headerdateien, die verschiedene Klassen und Strukturen beinhalten, diese includieren fast alle die Global.h und viele davon auch die Spiel.h, damit sie zugriff auf die Attribute des globalen Spielobjektes in Global.h (Global.h includiert Spiel.h nicht) haben. Spiel.h wiederum includiert sehr viele (eigentlich alle) jener "kleinen" Headerdateien.

Bisher hat das alles gut Funktioniert, bis ich eine weitere Headerdatei in Spiel.h includiere.

Ich verwende bei JEDER Headerdatei Include-Wächter.


Hoffe ihr könnt Helfen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
gibbets2000
Mini JLI'ler



Anmeldedatum: 01.01.2004
Beiträge: 6

Medaillen: Keine

BeitragVerfasst am: 07.01.2004, 19:34    Titel: Antworten mit Zitat

vieleicht hast du ja folgendes hingekriegt: du hast a.h und b.h. b wird in a inkludiert und a wird in b inkludiert. und schon hast du den salat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 12:33    Titel: Antworten mit Zitat

Ja, sowas hab ich gehabt:

Ich hab z.b.:

Grafik.h
Input.h
Sound.h
Spiel.h
Main.h

Die Spielklasse befindet sich in Spiel.h und hat Instanzen von Klassen aus Grafik.h, Input.h und Sound.h als Attribute. Grafik.h, Sound.h und Input.h brauchen aber Zugriff auf die Methoden und Membervariablen der Globalen Instanz der Spielklasse, die in Main.h deklariert ist (Main.h includiert Spiel.h nicht). Also hab ich z.B. in Spiel.h die Grafik.h includiert und in Grafik.h die Spiel.h includiert. Das lief alles gut, bis ich vor kurzem ne Header in Spiel.h includiert hab, die Grafik.h includiert. Ich weis nicht, ob es daran liegt, dass sie auch Grafik.h Includiert, oder ob es daran liegt, dass ich in Spiel.h damit einfach zu viele Headers includier.

Ich includier die Spiel.h inzwischen in Grafik.cpp, Sound.cpp und Input.cpp anstatt in den Headers, hat aber nichts gebracht Sad

Ich bin kurz davor, alle Klassen und soweiter in eine riesige Header zu schreiben, was ich aber ÄUSERST ungern machen würde Sad

PS:
Ich bekomm so ca. 200 Warnungen beim kompilieren, die sagen das die Namen von irgendwelchen vektor oder mapinstanzen zu lang sind und deswegen auf 255 Zeichen zurueckgesetzt wurden. Ich weis nicht, obs daran vieleicht auch liegen kann?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 12:46    Titel: Antworten mit Zitat

VerruecktesHuhn hat Folgendes geschrieben:
PS:
Ich bekomm so ca. 200 Warnungen beim kompilieren, die sagen das die Namen von irgendwelchen vektor oder mapinstanzen zu lang sind und deswegen auf 255 Zeichen zurueckgesetzt wurden. Ich weis nicht, obs daran vieleicht auch liegen kann?

Diese Warnungen kann man AFAIK ignorieren und daran liegen die Fehler glaub ich auch nicht. Wenn ich eine STL-Map verwende, bekomme ich in der Debugversion auch immer hunderte solcher Meldungen.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 13:24    Titel: Antworten mit Zitat

Hi!
Ich hab wegen deiner Erwähnung der Debug-Version mal auf Release umgeschaltet, und siehe da: Es funktionier! Kein Fehler, keine Warnungen.

Naja, kann sein, dass der Stack überlauf von zu vielen Warnungen kam?

Egal, es funktioniert, danke euch beiden!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 13:57    Titel: Antworten mit Zitat

Ab 200 Warnungen wirds glaub ich ein Fehler. Keine Ahnung woran das liegt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 14:22    Titel: Antworten mit Zitat

Man kann den Warnungslevel irgendwo in den Optionen runterschrauben, das sollte den "Fehler" auch geheben. Das mit den 255 Zeichen ist ein Bug in VC++6 und ist in neueren Versionen behoben.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 14:34    Titel: Antworten mit Zitat

In neueren Versionen behoben? Gibts dafür Updates (auch für die Autorenversion) ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 14:40    Titel: Antworten mit Zitat

Hmm ich hab das Service Pack drauf und der Fehler ist immer noch da... =/ Aus diesem Grund kompilier ich auch nur Release-Versionen und benutze meine eigenen Debug-Methoden.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 14:48    Titel: Antworten mit Zitat

Also ich hab die Stufe jetzt auf 1 gestellt (Projekt->Einstellungen->C++->Warnstufe) und alles läuft einwandfrei, auch die Debug Version.

Aber was meinst du mit "mein eigene Debug-Methoden" ? Was das und wie macht man das?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 15:18    Titel: Antworten mit Zitat

Ich benutze:

- eigenes Assert-Makro
- Logfunktionen
- In-Game Konsole
- Exception-Handling
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
C++Builder
Senior JLI'ler



Anmeldedatum: 04.10.2003
Beiträge: 235

Medaillen: Keine

BeitragVerfasst am: 09.01.2004, 18:14    Titel: Antworten mit Zitat

hi,

was ist das denn alles Question bringt das viele Vorteile Question
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
gibbets2000
Mini JLI'ler



Anmeldedatum: 01.01.2004
Beiträge: 6

Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 12:35    Titel: Antworten mit Zitat

ein assert-makro überprüt imho ob man über arraygrenzen hinausschreibt.
Logfunktionen schreiben einach in eine textdatei ob etwas schiegelaufen ist oder erfolgreich war oder einfach blos informationen
bei einem Ingame-menu kannst du wie z.b. Half-Life während der laufzeit variablen ändern

Bei den Exception kann ich das nicht so richtig erklären. Liegt daran das ich das nicht benutze. Das ganze läuft in einen try-catch.block ab.

Code:
try{
}
catch
{
}


musst du halt googlen oder in nem buch nachgucken...
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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