コールバック（）とは、コンピュータプログラミングにおいて、あるサブルーチン（関数など）を呼び出す際に別のサブルーチンを途中で実行するよう指定する手法のこと。呼び出し側（）が事前に用意・登録したサブルーチンを、呼び出し先（）のコードが「呼び出し返す」ように動作することから、電話回線におけるコールバック（）のアナロジーとして命名された手法である。これにより、下位レベル（フレームワーク）の抽象化層が上位レベルの層（アプリケーション）で定義されたサブルーチン（関数など）を呼び出せるようになる。このとき、他の関数の引数として渡される関数は、コールバック関数（）と呼ばれる。関数が第一級オブジェクトである言語において、コールバック関数を引数として受け取る関数は高階関数である。
背景.
代替手法として、新たにライブラリ関数を作り、適当な同期を施して必要な処理を行うようにする。この手法でもリストを辿る必要が生じる度に同様の関数を呼び出す必要がある。この方式は様々なアプリケーションで使われる汎用ライブラリにはふさわしくない。ライブラリ開発ではあらゆるアプリケーションのニーズを予測することはできないし、アプリケーション開発ではライブラリの実装の詳細を知る必要がないのが望ましい。
コールバックが、この問題の解決策となる。リストを辿るプロシージャを書くとき、そのプロシージャがアプリケーションが各要素についての処理を行うコードを提供するようにする。これにより、柔軟性を損なわずに明確にライブラリとアプリケーションを区別することができる。
コールバックは実行時束縛の一種と見ることもできる。
静的型付け言語の場合は、コールバック関数のシグネチャ（引数の数およびデータ型の順序）や戻り値の型といった呼び出しインターフェイスがコンパイル時に確定する。渡せる関数の名前は不問だが、この呼び出しインターフェイスに静的に適合するコールバック関数のみを渡すことができる。動的型付け言語の場合は、コールバック関数の引数の数のみが一致していればよい。
例.
 break;
次に、コールバックを使った間接的なコードを示す。
/* ライブラリ関数のプロトタイプ宣言 */
 break;
/* コールバック関数の実装 */
/* ライブラリ関数を呼び出す本体 */
 int index;
 ; ライブラリコード