「コールバック関数って何?」の編集履歴(バックアップ)一覧はこちら

コールバック関数って何?」(2010/07/24 (土) 02:03:47) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

コールバック関数は、事前に登録しておき、その後必要に応じて呼ばれる関数のことである。 Windowsでは、メッセージのやり取りによって、各イベントがおこる。 このとき、受け取ったメッセージを処理するのがウインドウプロシージャである。 これは次のような図で考えると分かりやすい #image(proc.jpg) コールバック関数 >Sub Call() >MessageBox(0,"",0,0) >End Sub > >Sub test(callbackfunc As *Sub()) >callbackfunc() >End Sub > >test(AddressOf(Call)) >
コールバック関数は、事前に登録しておき、その後必要に応じて呼ばれる関数のことである。 通常、関数やプロシージャなどは、プログラム内のコードから呼び出され実行される。一例としてsin()、Math.sin() などの三角関数は、print sin(pi)などのようにプログラム内で記述が現れた際に実行される。 一般的な関数は、すべて手続きに従って呼び出され実行される。 これに対して、コールバック関数は通常の手続きの流れとは異なり、関数がプログラム内部の 主としたフロー内から呼ばれないものの事を指す。 コールバック関数は、与えられた関数名を予め登録しておき、主たる処理のフローとは個別に、 何らかの処理が必要になった場合に、システムによって呼び出される。 この仕組みは割り込みなどの仕組みに応用出来る。 コールバック関数は、言語上、明確に区別されるものではなく、外部から何らかの関数が呼び出される 性質を持つ関数について言い、特にWinodws環境において表現する事が多い。 コールバック関数は、Windows環境のWin32APIを利用する際に良く現れる。 Windowsでは、メッセージのやり取りによって、各イベントがおこる。 このとき、受け取ったメッセージを処理するのがウインドウプロシージャである。 これは次のような図で考えると分かりやすい #image(proc.jpg) コールバック関数 >Sub Call() >MessageBox(0,"",0,0) >End Sub > >Sub test(callbackfunc As *Sub()) >callbackfunc() >End Sub > >test(AddressOf(Call)) > この例では、test()はコールバック登録と呼び出しが行われている。実際には登録と実行は区別される。 Call()は呼び出される関数で、Call()がコールバック関数に該当する。

表示オプション

横に並べて表示:
変化行の前後のみ表示: