Vreemd Void

Status
Niet open voor verdere reacties.

SuperABC

Gebruiker
Lid geworden
16 jul 2009
Berichten
327
Hi,

Ik heb 2x een void. Zoiets dus:
[CPP]void V_Een()
{
//blablabla
}

void V_Twee()
{
//blablabla
}[/CPP]
Nu wil ik als V_Een bij het einde is V_Twee aanroepen, maar dat kan/mag niet:
Error 1 error C3861: 'V_Twee': indentifier is not found.​
Maar als ik het vanuit de void main() doe is het geen enkel probleem, volgens mij komt het doordat V_Twee onder V_Een staat. Maar dat kan ik niet allemaal aanpassen want, ik heb een x-aantal voids die elkaar weer nodig aanzetten...

Iemand een idee wat je hiermee moet?
 
Klopt, C(++) kan functies alleen vinden als ze boven de aanroep gedefinieerd zijn. Als je de volgorde niet kan veranderen kan je dit oplossen met een functie prototype:
zet de functie header ergens bovenaan (voor "void V_Een()"):
[cpp]void V_Twee();[/cpp]
 
Laatst bewerkt:
tipje

ik zal altijd al je functie definites in een header file (.h(pp)) file zette, en die dan $include "urname.h". dit is gemakkelijker omdat je als je meerdere .cpp files hebt je dan makkelijke elke functie kun gebuiken, hier kun je heel ver in gaan, door al j funcites in .h te zetten of in een apparte .cpp file, dit zijn keuzes
 
Kun je in de Header file ook alle functies uit meerdere cpp files zetten? Zodat je ook in elke cpp file de functies uit de anderen kunt gebruiken? Ik heb het geprobeerd maar ik snap het niet helemaal, hoe je het bedoelt. Voorbeeldje?
 
Laatst bewerkt:
een voorbeeld:

functies.h (declaraties):
[cpp]
/* zogenaamde header-guards, deze zorgen ervoor dat een bestand niet 2x geinclude wordt */
#ifndef _FUNCTIES_H
#define _FUNCTIES_H

void een_functie();
int een_funtie2();

#endif
[/cpp]

andere_functies.h (declaraties) :
[cpp]
/* zogenaamde header-guards, deze zorgen ervoor dat een bestand niet 2x geinclude wordt */
#ifndef _ANDERE_FUNCTIES_H
#define _ANDERE_FUNCTIES_H

void andere_functie();
int andere_funtie2();

#endif
[/cpp]

functies.cpp: (definities)
[cpp]
#include "functies.h"

void een_functie() {
//doe hier dingen
return;
}

int een_functie2() {
// doe dingen;
return 0;
}
[/cpp]


andere_functies.cpp: (definities)
[cpp]
#include "andere_functies.h"

void andere_functie() {
//doe hier dingen
return;
}

int andere_functie2() {
// doe dingen;
return 0;
}
[/cpp]

main.cpp:

[cpp]

#include "functies.h"
#include "andere_functies.h"

int main () {
een_functie(); //aanroep functie uit functies.cpp
een_functie2(); //aanroep functie uit functies.cpp
andere_functie(); //aanroep functie uit andere_functies.cpp
functie2(); //aanroep functie uit andere_functies.cpp
return 0;
}
[/cpp]
Zoiets.
Er kunnen syntaxfouten inzitten aangezien ik het niet getest heb met een compiler. Maar ik denk dat het idee zo wel duidelijk moet zijn?
 
Laatst bewerkt:
Dat werkt precies zoals het moet, bedankt.:thumb:

Is het ook mogelijk om alle Prototypes van twee (of meer) cpp files in één Header file te plaatsen?
 
Laatst bewerkt:
Dat kan, maar komt de overzichtelijkheid niet ten goede. Het beste kun je de prototypes in xxxxx.h zetten en dan de functie-implementaties in de xxxxx.cpp en niet in yyyyy.cpp. Dit is veel handiger zoeken, vooral bij grotere projecten (met veel functies).
 
ik maak zelf altijd een file met al mijn zeer veel gebruikte functies, zoals memory reader, array of byte scan, weet niet of je dat wat egt, maar het gaat et om et idee. Het is alleen handig als je in echt veel verschillende files het gebruikt en het lange functies zijn
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan