Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++] Check op dubbel includen

Pagina: 1
Acties:

  • Chip.
  • Registratie: Mei 2006
  • Niet online
Hallo,

Ik zit met de volgende vraag. Ik heb een main en nog een aantal bestanden. Nu heeft bijvoorbeeld bestand 1 de header cmath.h nodig dus ik include deze in dat bestand. Nu wil ik graag een soort check in me main of deze header al is geinclude ja of nee? En zo nee dat deze dan wordt geinclude.

Nu is mijn vraag hoe kan ik dat nakijken of deze header al is geinclude?

Verwijderd

Wouser schreef op zaterdag 15 maart 2008 @ 12:53:
Hallo,

Ik zit met de volgende vraag. Ik heb een main en nog een aantal bestanden. Nu heeft bijvoorbeeld bestand 1 de header cmath.h nodig dus ik include deze in dat bestand. Nu wil ik graag een soort check in me main of deze header al is geinclude ja of nee? En zo nee dat deze dan wordt geinclude.

Nu is mijn vraag hoe kan ik dat nakijken of deze header al is geinclude?
De vraag is waarom je dat zou willen. Als het goed is heeft cmath.h al include guards zodat als ie om wat voor reden dan ook al eens eerder via-via ge-include is het geen probleem oplevert.

Zelf hanteer ik de volgende regel: als een source file een bepaalde declaratie gebruikt, dan, dan voeg ik de desbetreffende #include waarin die declaratie toe aan de source file. Het voordeel van deze regel is dat het altijd goed gaat, en dat je niet meer afhankelijk bent wat andere include files includen (iets wat eigenlijk ook helemaal niet wil weten).

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

wat bevalt je niet aan de
C++:
1
2
3
#ifndef BLAAT_H
#define BLAAT_H
#endif
constructie? :)

Je kunt dat wel zelf willen uitzoeken, maar je compiler kan dat ook prima :)

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-11 23:43

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op zaterdag 15 maart 2008 @ 13:04:
Zelf hanteer ik de volgende regel: als een source file een bepaalde declaratie gebruikt, dan, dan voeg ik de desbetreffende #include waarin die declaratie toe aan de source file. Het voordeel van deze regel is dat het altijd goed gaat, en dat je niet meer afhankelijk bent wat andere include files includen (iets wat eigenlijk ook helemaal niet wil weten).
Die regel zou ik dusdanig afzwakken zodat je alleen include als je, in het geval van classes, alleen de definitie nodig hebt, en niet alleen de declaratie. Voor een pointer naar een class heb je bijvoorbeeld de definitie van die class niet nodig en kun je beter zelf de declaratie ervan in je header zetten. Dat scheelt een hoop dependencies en biedt je bovendien de mogelijkheid om classes te definieren die van elkaar afhankelijk zijn (A heeft een B*, B heeft weer een A*)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Leuke regel, alleen is cmath.h een system include. Systeem declaraties moet je ook uit de headers halen.

Ik vermoed alleen dat de TS een ander probleem heeft - main.cpp moet cmath.h includen, ook als bestand1.cpp dat doet. Elke .cpp wordt los gecompileerd. Dit is tegenstelling tot .h files, die zelf niet gecompileerd worden maar meegenomen worden in elke .cpp die de header include.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein