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

[C++] Dubbele declaratie...

Pagina: 1
Acties:

  • danslo
  • Registratie: Januari 2003
  • Laatst online: 19:52
Misschien een heel simpel antwoord op een heel simpel vraagje maar ik kom er simpelweg gewoon niet uit.

Ik heb 3 bestanden, socket.cpp en main.cpp die beiden gebruik maken van een variable "sock". Deze 2 bestanden hebben het 3e bestand, namelijk main.h, geinclude staan. In main.h staat:
C++:
1
2
3
4
5
6
#ifndef _E_MAIN_H_
#define _E_MAIN_H_
...
SOCKET sock;
...
#endif

Maar nu is het zo dat wanneer ik het project build, ik gewoon het volgende terug krijg:
socket.obj : error LNK2005: "unsigned int sock" (?sock@@3IA) already defined in main.obj
Hoe kan hij in hemelsnaam sock 2 keer proberen te definieren? Die ifndef/define/endif zouden er toch voor moeten zorgen dat die code gewoon 1 keer wordt uitgevoerd?

Nogmaals excuus als dit heel erg basic is, ik snap simpelweg niet waarom hij gewoon niet doet wat ik wil :P

edit:
Ik heb ook begrepen dat je hier beter extern kan gebruiken? Daarmee krijg ik echter "error LNK2001: unresolved external symbol" terug terwijl ik wel degelijk winsock2.h geinclude heb en ws2_32.lib heb toegevoegd aan de linker.

Help :>


edit 2:

Heb het gefixed, had me gewoon wat beter moeten inlezen over extern. sock defined in main.cpp en vervolgens een extern in header file gegooid was genoeg ;)

[ Voor 19% gewijzigd door danslo op 01-01-2008 17:12 ]


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

't Is ook geen dubbele declaratie, maar een dubbele definitie. Mbv de extern maak je er een declaratie van ;)

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.