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.
Funktionsdefinition
Nachdem wir nun einige Beispiele durchgegangen sind, schauen wir uns die allgemeine Form einer Funktionsdefinition an:
void Funktionsname() {
Deklarationen von Variablen usw.
Ausdrücke...
//Es ist keine explizite Rückgabe erforderlich.
}
Eine Funktion gibt keinen besonderen Wert und keine eingehenden Parameter zurück.
void Funktionsname(Variable vom Datentyp) {
Deklarationen von Variablen usw.
Ausdrücke...
//Es ist keine explizite Rückgabe erforderlich.
}
Wenn Sie mehrere Variablen wünschen, verwenden Sie einfach "," als Trennzeichen:
Eine Funktion gibt keinen besonderen Wert zurück, sondern einen Parameter.
void Funktionsname(Variable vom Datentyp, Variable vom Datentyp usw.) {
Deklarationen von Variablen usw.
Ausdrücke...
//Es ist keine explizite Rückgabe erforderlich.
}
Eine Funktion gibt keinen besonderen Wert zurück, sondern mit mehr als einem Parameter.
void Funktionsname(Variable vom Datentyp, Variable vom Datentyp usw.) {
Deklarationen von Variablen usw.
Ausdrücke...
return return-value
}
Eine Funktion gibt einen Wert eines bestimmten Datentyps und mit mehr als einem Eingabeparameter zurück.
Der Typreturneiner Funktion muss mit dem Datentyp des Rückgabewerts übereinstimmen, den die Funktion zurückgibt. Der Rückgabewertkann ein konstanter Wert oder eine Variable sein Ihm muss das Schlüsselwort „return“ vorangestellt werden.”
Die folgenden Regeln regeln den Rückgabetyp:
- Für den Rückgabetyp gibt es fast keine Einschränkungen, mit Ausnahme des Arrays. (Array ist ein weiteres fortgeschritteneres Thema zum Erstellen Ihrer Daten. Dies liegt außerhalb des Rahmens dieses Artikels und wird hier nicht behandelt.
- Die Angabe des Rückgabetyps „void“ bedeutet, dass kein Rückgabewert erforderlich ist. Die Klausel „return“ ist implizit. Das bedeutet, dass Sie am Ende einer „void“-Funktion explizit „return“ angeben müssen.
Die Funktion soll vor oder nach main() erstellt werden?
Der Compiler liest Ihre Datei von oben nach unten. Daher ist die Reihenfolge wichtig.
Nehmen wir als Beispiel die einfache Funktion „Größter gemeinsamer Nenner“ (GCD). Es wird ein Fehler angezeigt:Verwendung des nicht deklarierten Bezeichners 'getGCD'
Tatsächlich gilt dies unabhängig davon, ob es sich um main() oder einen anderen aufrufenden Funktionsblock handelt, d. h. der „aufgerufene Funktionsblock“ muss vor dem „aufrufenden Funktionsblock“ stehen.
Zwei mögliche Lösungen:
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) );
}
Verschieben Sie die „aufgerufene Funktion“ über den „aufrufenden Funktionsblock“, im Beispiel „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;
}
Platzieren Sie den Prototyp (auch Signatur genannt) der Funktion vor dem „aufrufenden Funktionsblock“.
Was ist, wenn Sie Funktionen in verschiedenen Dateien modularisieren möchten?
Schritt 1: Erstellen Sie eine Header-Datei und fügen Sie den Prototyp der Funktion in diese Datei ein.
Erstellen Sie beispielsweise eine Datei mit dem Namen „myFuncs.h“.
Sie müssen diese Header-Datei Ihrem Projekt „hinzufügen“, bevor Sie Ihren Code kompilieren. Dadurch kann die VEXcode Pro V5-IDE die Einbeziehung dieser neuen Header-Datei „erkennen“, bevor sie mit der Erstellung Ihres Projekts beginnt.
Hier ist, wie:



In dieser Header-Datei „common.h“ (Sie können den Namen beliebig benennen, solange er alphanumerisch und ohne Leerzeichen ist.)
Schritt 2: Erstellen Sie eine separate CPP-Datei, z. B. mit dem Namen common.cpp.

// Dies ist die Datei common.cpp
int getGCD(int a, int b) {
int remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
Verschieben Sie die Funktion getGCD(...) in diese Datei
#include "vex.h"
#include "common.h"
using namespace vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}
Jetzt besteht die Haupt-CPP-Datei nur noch aus Folgendem
Referenz:https://api.vexcode.cloud/v5/html/namespacevex.html
Zukünftige Themen werden in Zukunft in fortgeschritteneren Abschnitten der VEX-Bibliothek behandelt:
- Wertübergabe vs. Referenzübergabe
- Übergeben Sie ein Array
- Übergeben Sie eine Struktur