Avatar billede joshin Nybegynder
11. maj 2002 - 14:34 Der er 1 kommentar og
2 løsninger

#include kører i ring

Jeg har en del klasser der stort set alle skal kende hinaden, men pludeselig får jeg en :
warning C4182: #include nesting level is 362 deep; possible infinite recursion
og
atal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit

Jeg bruger Visual C++ 6.0

koden der generelt sådan ud:
#include "GennemgaaendeHeader.h"
#include "Skaerm.h"
#include "HighScoreData.h"
#include "GenerelListe.h"
#include "BrugerNode.h"
#include "MosterMindLogik.h"
#include "Persist.h"

#ifndef SPILADMINISTRATION_H
#define SPILADMINISTRATION_H

class SpilAdministration {

hvis jeg flytter #include ned efter #ifndef kan den ikke finde klasserne

Hjælp !
Avatar billede jespernaur Nybegynder
11. maj 2002 - 14:41 #1
Det må være noget med at dine .h filer til dels inkluderer hinanden i ring. Altså
noget i retning af:


-----  a.h:

#include "b.h"

----- b.h:

#include "c.h"

----- c.h:

#include "a.h"

Prøv at gå alle #include's fra .h filerne omhyggeligt igennem - så finder du
sikkert fejlen.

Mvh
Jesper Naur
Avatar billede jakoba Nybegynder
11. maj 2002 - 14:41 #2
i skaerm.h laver du en define
#define SKAERM_H

i GennemgaaendeHeader.h laver du en define
#define GENNEMGAAENDEHEADER_H

osv osv for alle de filer der inkluderes

Og så bliver det:

#ifndef GENNEMGAAENDEHEADER_H
#include "GennemgaaendeHeader.h"
#endif
#ifndif SKAERM_H
#include "Skaerm.h"
#endif
...osv osv.

og det samme gør du inden i dine .h filer.

mvh JakobA
Avatar billede joshin Nybegynder
11. maj 2002 - 14:47 #3
Jeg prøver, tak for oplægende, i må dele poientene, da begge dele gir mening
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester