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.
Определение функции
Теперь, когда мы рассмотрели несколько примеров, давайте посмотрим на общую форму определения функции:
void function-name() {
Объявления переменных и т. д.
Выражения...
// явный возврат не требуется.
}
Функция не возвращает ни специального значения, ни входящих параметров.
void имя-функции (переменная типа данных) {
Объявления переменных и т. д.
Выражения...
// явный возврат не требуется.
}
Если вам нужно несколько переменных, просто используйте «,» в качестве разделителя:
Функция не возвращает специального значения, а возвращает один параметр.
void имя-функции (переменная типа данных, переменная типа данных и т. д.) {
Объявления переменных и т. д.
Выражения...
// явный возврат не требуется.
}
Функция не возвращает специального значения, но имеет более одного параметра.
void имя-функции (переменная типа данных, переменная типа данных и т. д.) {
Объявления переменных и т. д.
Выражения...
вернуть возвращаемое значение
}
Функция возвращает значение определенного типа данных и имеет более одного входного параметра.
Типreturnфункции должен совпадать с типом данных возвращаемого значения, которое возвращает функция. Возвращаемое значениеможет быть постоянным значением или переменной. Ему должно предшествовать ключевое слово «return».”
Следующие правила регулируют тип возвращаемого значения:
- Ограничений на тип возвращаемого значения практически нет, кроме массива. (Массив — еще одна более сложная тема, касающаяся создания данных. Это выходит за рамки данной статьи и здесь не рассматривается.
- Указание типа возвращаемого значения «void» означает, что возвращаемое значение не требуется. Пункт «возврат» неявный. Это означает, что вы должны явно указать «return» в конце «void» функции.
Создание функции до main() или после?
Компилятор читает ваш файл сверху вниз. Таким образом, порядок имеет значение.
Давайте возьмем в качестве примера простую функцию наибольшего общего знаменателя (НОД). Вы получите ошибку:использование необъявленного идентификатора getGCD
На самом деле это справедливо независимо от того, исходит ли он из main() или другого вызывающего функционального блока, т.е. «вызываемый функциональный блок» должен предшествовать «вызывающему функциональному блоку».
Два возможных решения:
int getGCD(int a, int b) {
int остаток = 1;
while (остаток > 0) {
остаток = a % b;
а = б;
б = остаток;
}
вернуть а;
}
int main() {
Brain.Screen.printAt(5,60, «НОД ( %d, %d ) = %d», getGCD(60, 100));
}
Переместите «вызываемую функцию» над «блоком вызывающей функции» в примере «main()».
интервал getGCD (интервал, интервал);
int main() {
Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100));
}
int getGCD(int a, int b) {
int остаток = 1;
while (остаток > 0) {
остаток = a % b;
а = б;
б = остаток;
}
вернуть а;
}
Поместите прототип (также называемый сигнатурой) функции перед «блоком вызывающей функции».
Что делать, если вы хотите модульно разместить функции в разных файлах?
Шаг 1. Создайте заголовочный файл и поместите в него прототип функции.
например, создайте файл с именем «myFuncs.h»
Вам необходимо «добавить» этот заголовочный файл в свой проект перед компиляцией кода. Это позволяет среде IDE VEXcode Pro V5 «знать» о включении этого нового заголовочного файла до того, как она начнет создавать проект.
Вот как:



В этом заголовочном файле «common.h» (вы можете назвать все, что захотите, главное, чтобы оно было буквенно-цифровым и без пробелов.)
Шаг 2. Создайте отдельный файл cpp, например, с именем common.cpp.

//это файл common.cpp
int getGCD(int a, int b) {
int rester = 1;
while (остаток > 0) {
остаток = a % b;
а = б;
б = остаток;
}
вернуть а;
}
Переместите функцию getGCD(...) в этот файл.
#include "vex.h"
#include "common.h"
с использованием пространства имен vex;
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "НОД ( %d, %d ) = %d", getGCD(60, 100));
}
Теперь все, что у вас есть в основном файле cpp, будет состоять из следующего:
Ссылка:https://api.vexcode.cloud/v5/html/namespacevex.html
Будущие темы будут рассмотрены в более продвинутых разделах библиотеки VEX:
- Передача по значению или передача по ссылке
- Передать массив
- Передача структуры