関数/関数のプロトタイプ宣言
関数を定義してみます。
サンプル
#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