事前に使われていない名前を書き、その後に小括弧が書かれていた場合、それは関数の名前と判断されます。
書式:
関数名( 仮引数1, 仮引数2… 仮引数n)
引数(
仮引数)は関数に渡される値です。
仮引数1~仮引数nはそれぞれの式が計算され、その値が関数に渡されます。
式の計算順序と値の読み込み順序は保障されません。
実行中にシステムは関数へ渡った引数の値と型をチェックします。
関数の呼び出しは
式です。
そして関数によって値が返されます。
関数の戻り値型と返す値の型は一致しなければなりません。
関数の宣言は
グローバルな範囲(外部の他関数)で、プログラムのどんな部分にでも書く事が出来ます。
ただし、他の関数内部で関数を宣言する事は出来ません。
サンプルソース:
int OnInit(){
double some_array[4]={0.3, 1.4, 2.5, 3.6};
double tme_double;
tme_double = lin_func( some_array, 10.5, 8);
Print(tme_double);
return 0;
}
double lin_func(double& x[], double a, double b) {
double ret_double;
ret_double = ( a * x[0] + b);
return ret_double;
}
void func(void) {
void func2(void) {
}
}
デフォルト値を持つ関数の呼び出しは、渡す引数の値を省略する事が出来ます。
ただし、最初のデフォルト値の前の値(デフォルト値を設定していない値)は省略出来ません。
関数を呼ぶ時、デフォルト値が設定されている引数の一つをスキップさせる事は出来ません。
サンプルソース:
int OnInit(){
somefunc();
somefunc(3.14 );
somefunc(3.14 , 0.0002 );
somefunc(3.14 , 0.0002 , 20);
somefunc(3.14 , , 10);
return 0;
}
void somefunc(double init,
double sec = 0.0001,
int level = 10){
Print(init,sec,level);
}
プログラム内の別の実行コンテキストから同じ名称の関数使用は曖昧さを引き起こす可能性があります。
この場合、関数呼び出しの曖昧さを回避する為に、明示的に
スコープ解決演算子を使用して関数スコープを指定します。