projecten

Status
Niet open voor verdere reacties.

tchembado

Gebruiker
Lid geworden
28 nov 2006
Berichten
93
hoi allemaal, het is misschien een noobie vraag maar toch :p :

ik ben nu al een tijdje met c++ bezig, en mijn bestandjes beginnen al een serieuse lengte te krijge. Nu is mijn vraag of je die in een project uit elkaar kan halen in kleinere stukjes, zodat het overzichtelijker wordt.

zodat je bijvoorbeeld in je main source enkel de main functie hebt staan met verwijzingen naar andere functies die dan in andere sources geschreven staan.

ik gebruik btw devc++ mogt dit belangrijk zijn.

alvast bedankt:thumb:
 
Makkelijk zat in C / C++

Per module (mooi woord) maak je een 'header' (test.h) en een 'implementatie' (test.cpp)
In de header doe je al je definities, in de implementatie maak je al je functies enzo.

In je "main" programma (laten we dat prog.cpp noemen) haal je met bijvoorbeeld #include "test.h" alle definities van de module test binnen (die staan dus in test.h)
In test.cpp doe je dat ook.
Dan moet je de linker nog duidelijk maken dat test.obj bij het maken van prog.cpp meegenomen moet worden.

Pffff, gelukkig doet Visual C++ dat allemaal voor je. Dev C++ ken ik niet dus dat weet ik ook niet.
 
idem ditto voor dev-cpp

In plaats van een nieuw bestand aan te maken, kies je voor een nieuw project. Je kiest voor 'Empty Project', vult een naam in en klikt op OK. Dan kan je kiezen waar je het project gaat opslaan, ik raad je aan om per project een nieuwe map aan te maken en het daarin op te slaan. Zo blijft de inhoud van je computer ook wat overzichtelijk ;)

In de linkse kolom zie je nu in het tabblad project de naam van je project staan. Als je nu een nieuw bestand aanmaakt, zal dev-cpp je vragen of het een onderdeel van dit project moet worden, je keist uiteraard voor 'Ja'.

Je kan het overzicht in je project nog wat vergroten door in de projecttab, links op je scherm, met de rechtermuisknop op de projectnaam te klikken. Zo kan je binnen het project nieuwe folders aanmaken.

Als al je samenhorende files in 1 project zitten, neemt Dev-Cpp het linken voor eigen rekening, dus daar hoef je je geen zorgen in te maken :)

--Johan
 
wat moet ik dan juist in die bestanden zetten die ik er bij zet, zodat ze goed worden gelinkt enzo?

hoe moetik bijvoorbeeld doen
dat ik in mijn main dit heb staan:

#include<iostream.h>
#andere includes om te linken ofzo?

main()
{
hello();
}

en dan in een ander bestand wil ik die hello uitlegge
namelijk:
void hello()
{cout<<"hello world";}
 
om je voorbeeld uit te werken:

oorspronkelijke code: alles.cpp
Code:
#include <iostream> //niet iostream.h -> is verouderd!
using namspace std;

int main()
{
    cout << "Hallo" << endl;
    cin.get(); //wachten op een toets om af te sluiten
    return 0;
}

we krijgen nu 3 files:
Code:
main.cpp - de mainfunctie
hallo.h - de definitie van de functie
hallo.cpp - de eigenlijke hallo-functie

hallo.h:
Code:
#ifndef HALLO_H
#define HALLO_H
/* deze "define" zorgt ervoor dat de code over je hele project maar eenmaal gecompileerd zal worden */

//functiedefinities
void hallo();

#endif //einde van de definitie van je header-file HALLO_H

hallo.cpp:
Code:
#include "hallo.h"
#include <iostream>
using namespace std;

void hallo()
{
    cout << "Hallo" << endl;
}

main.cpp
Code:
#include "hallo.h" //de definitie
#include <iostream>
using namespace std;

int main()
{
    hallo();
    cin.get();
    return 0;
}

--Johan
 
en bij doet die dat niet?

Ik heb het zelfde voorbeeldje als van johantrax geprobeerd maar helaas.

Wat doe ik: eerst neem ik een nieuw broncode bestand en zet hierin alles wat in die header moet komen en sla hem op al .h file. dan neem ik opnieuw één wit blad zet daarop al het geen wat in het broncode bestand moet komen en sla dat op al c bestand.
dan compileer ik de header maar dat lukt niet en als ik hetzelfde wil doen emt de broncode dan geeft die ne linker fout?
Ik probeer dan nog bij mijn compile opties een nieuw pad toe te voegen maar helaas.

Dit allemaal in Devc++ kan iemand mij verder helpen? Groeten Dank bij voorbaat.
 
Dag Bert,

Zo het kunnen dat jij gewoon nieuwe bestanden hebt aangemaakt zonder eerst een nieuw project aan te maken. Hoe je dat doet staat in m'n eerste post van dit topic ;) .
Als dat niet je probleem is, geef dan eens even met welke versie van DevCpp je werkt?

--Johan
 
Ik heb het opnieuw geprobeerd met het aanmaken van twee projecten om dan via het tweede een functie op te roepen vnauit het eerste, maar helaas dat blijkt nooit te werken :confused: bestaat er geen goede handleiding van devc++? ik ben nu toch al zo'n 2 tal maanden aan het zoeken envidnt dat gewoon niet??

Kan mij iemand helpen? Groeten Danken bij voorbaat.

edit versie 4.9.9.2.
 
Die drie bestanden van het voorbeeld staan allen in hetzelfde project. Voor alle duidelijkheid heb ik bijgevoegd een map met screens (aanmaken project en nieuwe file in project aanmaken) en een map met voorgaande code als voorbeeldproject voor Dev-Cpp.

--Johan
 

Bijlagen

Ontzettend bedankt. Ik maak imense vorderingen alleen stop hij nu met dit?
vorderingqh8.jpg


Hoe komt dat? Groeten. Bedankt.
 
1. als je mijn code gebruikt moet je codebestanden de extensie '.cpp' hebben, niet '.c'
2. ik denk dat er een probleem komt omdat je beide bestanden dezelfde naam hebben, als je er een van hernoemt, wat is het resultaat dan?

--Johan
 
dus je bedoelt dat een header en een broncode bestand geen zelfde nam mogen hebben?
Ik dacht net dat dit moest? dus de aan de broncode hangen we een header met zelfde naam of toch niet?

Groeten.
 
die hebben inderdaad dezelfde naam, maar niet dezelfde extensie!.

de code komt in een bestand met extensie .cpp
de header komt in een bestand met extensie .h

dus in plaats van
Code:
hallo.c
hallo.c
krijg je
Code:
hallo.cpp
hallo.h

--Johan
 
oké dus empty project dan één file met daarin de source opslaan als cpp en één file met daarin de header opslaan als cpp.

Eigenlijk dacht ik eerst c te leren en dan c++ en omdat ik geen compiler vond voor c heb ik er dan maar één genomen die ze beide kan, daarom ook dat ik altijd met c bestanden werk en niet cpp.

dit doe ik en compileer dan. zonder enige foutmelding enkel heb ik:

prorw6.jpg


waarom krijg ik dit?

Groeten.
 
ik heb nog wat gegoogeld en ik krijg het volgende http://www.bloodshed.net/faq.html#3 daar staat een uitleg over deze foutmelding. Met vermelding dat je waarschijnelijk geen main functie hebt ingevoegd, dit is idd zo maar moet dat indien je een los stukje code wilt compileren?

Groeten.
 
Of als je een console project, dus met een main() functie, als windows project compileert (vandaar de WinMain()) krijg je ook die fout. Zit waarschijnlijk ergens in je linker instellingen
 
pfff ik wil echt leren programmeren in c maar die compiler doet het nooit. kan mij iemand een goede link bezorgen waar die hele compiler goed uitgelegd staat? of een andere goede compiler die niet moeilijk in gebruik is?

Groeten.
 
Compilers die veel eenvoudiger zijn ben ik nog niet tegengekomen, maar om terug te komen op je foutmelding.

Die zegt inderdaad dat je geen main-functie hebt. Een main-functie bevat het eigenlijke programma. De code die daarin komt wordt uitgevoerd, dus als je geen main-functie hebt kan je ook geen programma maken...

in het voorbeeld staat die main-functie in een 3de bestand: main.cpp

--Johan
 
het loopt soms wel (en dan denk ik alles correct te hebben uitgevoerd) maar dan waarschuwt hij mij dat er een functie bij zit zonder effect??
Bovendien staat het heel internet bezaait met die linker fout maar nergens geen oplossing? bestaat er geen handleiding of zo?

Groeten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan