無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

関数/関数のプロトタイプ宣言

関数を定義してみます。

形式

基本の形式は次のとおり。Javaと似た感じです。

<戻り値の型> <関数名>( <引数の型> <仮引数>, <引数の型> <仮引数> ... ) {
  処理
  ...
}

サンプル

#include <iostream>

// 関数定義
int add( int i ){
    return i+1;
}

int main() {
    int i = 0;
    std::cout << i << std::endl;
    
    i = add( i ); // 関数を実行。
    std::cout << i << std::endl;
    return 0;
}

実行結果です。

0
1

関数のプロトタイプ宣言

C++では、関数は利用する前に定義されているか、先に関数のプロトタイプ宣言をしておく必要があります。(関数そのもの、またはプロトタイプ宣言をもとに関数の呼び出し形式が不正ではないかチェックしているらしい。)

プロトタイプ宣言の形式は次のとおりです。

<戻り値の型> <関数名>( <引数の型> <仮引数>, <引数の型> <仮引数> ... );
サンプル:プロトタイプ宣言をしないとエラーになる

上のサンプルの関数「add」の定義を「main」の後に移動したもの。コンパイルエラーになります。

#include <iostream>

int main() {
    int i = 0;
    std::cout << i << std::endl;
    
    i = add( i ); // 関数を実行。
    std::cout << i << std::endl;
    return 0;
}
// 関数定義
int add( int i ){
    return i+1;
}

コンパイル。→エラー発生。

$ g++ -o sample function-error.cpp 
function-error.cpp: In function `int main()':
function-error.cpp:7: error: `add' was not declared in this scope
サンプル:プロトタイプ宣言を追加。

エラーとなったコードにプロトタイプ宣言を追加してみます。

#include <iostream>

// 関数のプロトタイプ宣言
int add( int i );

int main() {
    int i = 0;
    std::cout << i << std::endl;
    
    i = add( i ); // 関数を実行。
    std::cout << i << std::endl;
    return 0;
}
// 関数定義
int add( int i ){
    return i+1;
}

コンパイル。エラーが修正されています。

g++ -o sample function-prototype.cpp 

実行結果です。

0
1