Vraag & Antwoord

Programmeren

Een variabele in twee bronbestanden gebruiken (C++)

2 antwoorden
  • Hallo, Ik gebruik Visual Studio 2005 om mijn programma te compileren/linken, maar ik krijg daarbij een fout van de linker als ik probeer om één variabele of functie in twee verschillende bronbestanden te gebruiken. Een simpel voorbeeldje: [b:cad72b3084]globals.h[/b:cad72b3084] [code:1:cad72b3084]void DoeDingen(); unsigned int Variabel;[/code:1:cad72b3084] [b:cad72b3084]funcs.cpp[/b:cad72b3084] [code:1:cad72b3084]#include "globals.h" void DoeDingen() { Variabel = 3; }[/code:1:cad72b3084] [b:cad72b3084]main.cpp[/b:cad72b3084] [code:1:cad72b3084]#include "globals.h" // WinMain functie if (Variabel != 3) { DoeDingen(); }[/code:1:cad72b3084] De linker geeft dan error LNK2005 als resultaat, ook als ik helemaal geen referentie naar Variabel maak in één van de bronbestanden. Ik weet dat bovenstaande code fout is, maar hoe moet het wel? Bedankt!
  • H-bestanden bevatten alleen verwijzingen (signatures) naar implementaties in cpp-bestanden. Zo weet C++ dat er ergens een functie moet zijn die er zo uitziet, zoniet dan krijg je een foutmelding van de linker. Normaliter zet je een signature van een functie die je in funcs.cpp hebt geimplementeerd in funcs.h (zelfde naam dus). Wanneer je dat niet wil bestaat er het keyword "extern". Als je dat voor je signature zet dan geef je aan dat de implementatie overal kan voorkomen. Meestal gebruik je extern niet zo vaak, alleen in h-bestanden behorende bij libraries ".lib". Dus "void DoeDingen()" moet "extern void DoeDingen()" worden, [i:c963ce20ce]of[/i:c963ce20ce] je moet die regel in funcs.h zetten. Indien funcs.h niet bestaat kun je gewoon een leeg bestand maken en hem aan het project toevoegen. Snap je nu ook wat je (niet) doet bij de regel "unsigned int Variabel"? :wink:

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.