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 関数名() {
変数などの宣言
式...
//明示的なリターンは必要ありません。
}
関数は特別な値や受信パラメータを返しません。
void 関数名(データ型変数) {
変数の宣言など
式...
//明示的なリターンは必要ありません。
}
複数の変数が必要な場合は、単に「,」を区切り文字として使用します。
関数は特別な値を返しませんが、パラメータが 1 つあります。
void 関数名(データ型変数、データ型変数など) {
変数などの宣言
式...
//明示的なリターンは必要ありません。
}
関数は特別な値を返しませんが、複数のパラメータを返します。
void 関数名(データ型変数、データ型変数など) {
変数などの宣言
式...
return 戻り値
}
関数は、複数のパラメータを入力して、特定のデータ型の値を返します。
関数のreturn型は、関数が返す戻り値のデータ型と同じである必要があります。 戻り値は、定数値または変数にすることができます。 先頭にキーワード「return」を付ける必要があります。」
戻り値の型は次の規則によって決まります。
- 戻り値の型には、配列を除いてほとんど制限がありません。 (配列は、データの作成方法に関するもう 1 つの高度なトピックです。 これはこの記事の範囲外であるため、ここでは説明しません。
- 戻り値の型を「void」に指定すると、戻り値が不要になります。 「返却」条項は暗黙的です。 つまり、「void」関数の最後に「return」を明示的に記述する必要があります。
関数を作成するのは main() の前ですか、それとも後ですか?
コンパイラはファイルを上から下に読み取ります。 したがって、順序は重要です。
単純な最大公約数 (GCD) 関数を例として考えてみましょう。 エラーが発生します:use of undeclared identifier 'getGCD'
実際、これは main() からのものであっても、他の呼び出し関数ブロックからのものであっても当てはまります。つまり、「呼び出される関数ブロック」は「呼び出し関数ブロック」より前になければなりません。
考えられる解決策は 2 つあります。
int getGCD(int a, int b) {
int 剰余 = 1;
while (剰余 > 0) {
剰余 = a % b;
a = b;
b = 余り。
}
戻り値;
}
int main() {
Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
「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 剰余 = 1;
while (余り > 0) {
余り = a % b;
a = b;
b = 余り。
}
戻り値;
}
関数のプロトタイプ (シグネチャとも呼ばれる) を「呼び出し側関数ブロック」の前に置きます。
関数を異なるファイルにモジュール化したい場合はどうすればよいでしょうか?
ステップ 1: ヘッダー ファイルを作成し、関数のプロトタイプをこのファイルに置きます。
たとえば、「myFuncs.h」という名前のファイルを作成します。
コードをコンパイルする前に、このヘッダー ファイルをプロジェクトに「追加」する必要があります。 これにより、VEXcode Pro V5 IDE は、プロジェクトのビルドを開始する前に、この新しいヘッダー ファイルが含まれていることを「認識」できるようになります。
その方法は次のとおりです。



このヘッダー ファイル「common.h」(スペースを含まない英数字であれば、任意の名前を付けることができます)。
ステップ 2: 別の cpp ファイル (たとえば、common.cpp という名前) を作成します。

//これは common.cpp ファイルです
int getGCD(int a, int b) {
int剰余 = 1;
while (剰余 > 0) {
剰余 = a % b;
a = b;
b = 余り。
}
a を返します。
}
関数 getGCD(...) をこのファイルに移動します
#include "vex.h"
#include "common.h"
名前空間 vex を使用します。
int main() {
vexcodeInit();
Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}
これで、メインの cpp ファイルにあるものは次のもので構成されます。
参考:https://api.vexcode.cloud/v5/html/namespacevex.html
今後のトピックは、VEX ライブラリのより高度なセクションで取り上げられる予定です。
- 値渡しと参照渡し
- 配列を渡す
- 構造物を渡す