いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

自分で作った関数の存在を他の関数やファイルに教えるためには、関数のプロトタイプ宣言を記述します。

関数は基本的に自分以外の関数の存在を知りませんが、あらかじめプロトタイプ宣言をしておくと、他の関数の存在を知ることができ、自分の関数の中から他の関数を使うことができるようになります。

関数のプロトタイプ宣言は、その関数を使いたい場所より前に書く必要がありますが、その書き方は非常に簡単です。関数の定義からブロックを省略するだけで済みます。

たとえば次のような関数があったとき…

int someFunction(int arg1, char *arg2)
{
  int result = arg1 + atoi(arg2);
  return result;
}

プロトタイプ宣言は次のようになります。

int someFunction(int arg1, char *arg2);

実際に main() 関数などから、この someFunction() 関数を使いたい場合は次のように書きます。

// まずプロトタイプ宣言を書く
int someFunction(int arg1, char *arg2);

// someFunction() を使う main() 関数を書く
int main(int argc, char *argv[])
{
  int arg1 = 10;
  char *arg2 = "30";

  return someFunction(arg1, arg2);
}

// someFunction() 関数の本体を書く
// 必ずしもここに書く必要はなく、別のファイルでも問題なし
// ただし、その場合でもプロトタイプ宣言は必要になる
int someFunction(int arg1, char *arg2)
{
  int result = arg1 + atoi(arg2);
  return result;
}

プロトタイプ宣言はヘッダファイルの中に書くのが一般的です。 #include を使うことで大量の関数のプロトタイプ宣言を一気にインポートできるからです。一番わかりやすい例が windows.h です。 Windows のプログラムを開発する場合には必ず #include と書いてきましたが、この windows.h の中では膨大な数のプロトタイプ宣言が書いてあります。これは Windows が持っている関数の存在を自分のソースコードに教えていることに他なりません。

ちなみに、関数を使う前に関数の定義が来ている場合はプロトタイプ宣言が不要です。たとえば次のコードは問題なく動作します。

// someFunction() 関数の定義を前もって書いておき、
// プロトタイプ宣言は書かない
int someFunction(int arg1, char *arg2)
{
  int result = arg1 + atoi(arg2);
  return result;
}

// someFunction() にはプロトタイプ宣言がないが、
// すでに上で定義済みなので問題なく使うことができる
int main(int argc, char *argv[])
{
  int arg1 = 10;
  char *arg2 = "30";

  return someFunction(arg1, arg2);
}

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
過去の記事
RSS track feedいちばんやさしいゲームの作り方 TECHNORATI お気に入りに追加する
フィードメーター - いちばんやさしいゲームの作り方 ブログSEO対策:track word カウンター
Firefox meter あわせて読みたい SEO STATUS
このページの先頭へ