The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
Functiedefinitie
Nu we een paar voorbeelden hebben doorgenomen, gaan we kijken naar de algemene vorm van een functiedefinitie:
void function-name() {
Declaraties van variabelen, enz.
Expressies...
//Er is geen expliciete return nodig.
}
Een functie retourneert geen speciale waarde, noch binnenkomende parameters.
void function-name(data-type variable) {
Declaraties van variabelen, enz.
Expressies...
//Er is geen expliciete return nodig.
}
Als je meerdere variabelen wilt gebruiken, gebruik je gewoon als scheidingsteken:
Een functie retourneert geen speciale waarde, maar met één parameter.
void function-name(data-type variable, data-type variable, etc.) {
Declaraties van variabelen, enz.
Uitdrukkingen...
//Er is geen expliciete return nodig.
}
Een functie retourneert geen speciale waarde, maar met meer dan één parameter.
void function-name(data-type variable, data-type variable, etc.) {
Declaraties van variabelen, enz.
Uitdrukkingen...
return return-value
}
Een functie retourneert een waarde van een specifiek gegevenstype, en met meer dan één parameter.
Het type van een functieretourneertretourneert, moet hetzelfde zijn als het gegevenstype van de retourwaarde die die functie retourneert. De retourwaardekan een constante waarde of een variabele zijn. Het moet worden voorafgegaan door het trefwoord “return.”
De volgende regels zijn van toepassing op het retourtype:
- Er zijn vrijwel geen beperkingen op het retourtype, behalve array. (Array is een ander, meer geavanceerd onderwerp over het creëren van uw gegevens. Dit valt buiten het bestek van dit artikel en wordt hier niet behandeld.
- Als u opgeeft dat het retourtype 'void' betekent dat er geen retourwaarde nodig is. De clausule ‘teruggave’ is impliciet. Dat betekent dat je expliciet ‘return’ moet vermelden aan het einde van een ‘void’-functie.
Moet de functie vóór of na main() worden aangemaakt?
De compiler leest uw bestand van boven naar beneden. De volgorde doet er dus toe.
Laten we de eenvoudige functie van de grootste gemene deler (GCD) als voorbeeld nemen. Je krijgt een foutmelding:gebruik van niet-gedeclareerde identifier 'getGCD'
In feite is dit waar, ongeacht of het afkomstig is van het main() of een ander aanroepend functieblok, dat wil zeggen dat het “aangeroepen functieblok” moet voorafgaan aan het “aanroepende functieblok.”
Twee mogelijke oplossingen:
int getGCD(int a, int b) {
int remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
int main() {
Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
Verplaats de 'aangeroepen functie' boven het 'aanroepende functieblok', in het voorbeeld 'main()'.
int getGCD(int, int);
int main() {
Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}
int getGCD(int a, int b) {
int remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
Plaats het prototype (ook wel handtekening genoemd) van de functie vóór het ‘aanroepende functieblok’.
Wat als u functies in verschillende bestanden wilt modulariseren?
Stap 1: Maak een headerbestand aan en plaats het prototype van de functie in dit bestand.
maak bijvoorbeeld een bestand met de naam "myFuncs.h"
U moet dit headerbestand aan uw project “toevoegen” voordat u uw code compileert. Hierdoor kan de VEXcode Pro V5 IDE “op de hoogte zijn” van de opname van dit nieuwe headerbestand voordat het begint met het bouwen van uw project.
Hier is hoe:



In dit headerbestand “common.h” (je kunt een naam geven wat je wilt, zolang het maar alfanumeriek is en geen spatie bevat.)
Stap 2: Maak een apart cpp-bestand aan, bijvoorbeeld met de naam common.cpp.

//Dit is het common.cpp-bestand
int getGCD(int a, int b) {
int remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
Verplaats de functie getGCD(...) naar dit bestand
#include "vex.h"
#include "common.h"
using namespace vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}
Nu bestaat alles wat u in het hoofd-cpp-bestand hebt uit het volgende
Referentie:https://api.vexcode.cloud/v5/html/namespacevex.html
Toekomstige onderwerpen zullen in de toekomst worden behandeld in meer geavanceerde secties van de VEX-bibliotheek:
- Pass by value vs. pass by reference
- Geef een array door
- Passeren in een structuur