全てのタスクはサブタスクに分ける事が出来ます。
サブタスクは直接コードを書く事が出来ます、またはより小さいサブタスクに分ける事も出来ます。
関数はサブタスクのコードを書くために使われます。
最初の中括弧{}の前にある物は全て関数定義のヘッダです。
中括弧の中にあるのは関数の本体です。
関数ヘッダは、戻り値型、関数名(
識別子)、
仮引数を含みます。
関数の仮引数の数は制限されており、64個を超える事が出来ません。
関数は必要に応じて他プログラムから何度も呼び出す事が出来ます。
戻り値、関数名、仮引数の型は関数プロトタイプで構成されます。
関数プロトタイプは定義では無く、関数宣言です。
戻り値型、仮引数の型宣言によって、
関数呼び出しの時に厳しい型チェックと暗黙的
キャストが行われます。
関数宣言はソースコードを分けて、ソースコードを読みやすくする為に使われます。
関数定義は正確に関数宣言に一致させる必要があります。
サンプルソース:
double
sub_function
(double a, double b)
{
double tmp_sum;
tmp_sum = a + b;
return (tmp_sum);
}
return処理は、return文の式の値を返す事が出来ます。
必要に応じて、式の値は関数の戻り値型に変換する事が出来ます。
戻り値に使用出来るのは、
基本的なデータ型・
単純な構造体・
オブジェクトポインタです。
配列・
クラスオブジェクト・
複雑な構造体は戻り値に使用する事は出来ません。
値を返さない関数は戻り値型を
void型で宣言する必要があります。
サンプルソース:
void void_function(string in_str){
Print("仮引数データ" + in_str);
}
関数の仮引数はデフォルト値を持つ事が出来ます。
デフォルト値の定数は対応する型で定義する必要があります。
また、仮引数のいずれかにデフォルト値を設定した場合、それ以降の仮引数にもデフォルト値を設定しなければなりません。
サンプルソース:
int OnInit(){
void_function();
void_function(0,0,false,"無し");
return 0;
}
void void_function(
int in_int = 1,
double in_double = 0.1,
bool in_bool = true,
string in_str = "仮引数"
)
{
Print( in_int , in_double , in_bool , in_str);
}
void void_function(
int in_int ,
double in_double = 0.1,
bool in_bool ,
string in_str = "仮引数"
)
{
Print( in_int , in_double , in_bool , in_str);
}