質問: コールバックって何? はじめまして、_ixtlと申します。 仕事場でコールバック関数という言葉を聞きました。 呼び出し先にあらかじめ呼び出す関数を覚えさせておく 手法(うろおぼえ)とか...何とか...。 (確か、複数の関数ポインタのテーブルを持たせていたような気がします) wikipediaなどでも調べましたが、意味が分かりません。 この意味や、メリットなどを詳しく教えて頂けないでしょうか? お願いします。
回答: 基本的には#1さんの回答で十分と思うのですが、メリットがよく分からないという事なので補足します。 たとえば、自分一人でwindowsのように画面にボタンを表示しマウスやキーボードからの入力を受付け、表示したボタンを押下したら別のプログラムが起動するようなプログラムを組むとします。 そうした場合、画面にボタンを表示する処理やマウスの移動などを感知するためハードウェアに近いレベルでのプログラムを組まなければいけません。 それは膨大な量のソースコード量になるでしょう。 それでは時間も勿体無いので、共通出来る部分はシステム側にやってもらうようにします。 ●システム側での処理 (1)アプリ側から指定された領域にボタンを表示 (ボタン上でマウスがクリックされた際に呼出すアプリ側の関数を記憶) (2)ボタン上でマウスがクリックされた際にアプリ側から指定された関数をコール ●アプリ側の処理 (1)指定された領域にボタンを表示するようシステム側に依頼 (ボタン上でマウスがクリックされた際に呼出す関数を同時に指定) (2)ボタン上でボタンを押下された時に行う処理を記述 こうすると、アプリ側はボタンを表示する依頼をする処理とボタンを押下された時に行う処理のみを記載すれば良い事になります。 結果的にコールバック関数というのは、全体のコード量を減らすことや、共通出来る処理はシステム側にやってもらう事で処理を簡潔にする為に用意されていると思って問題ないと思います。