No.1ベストアンサー
- 回答日時:
コールバック関数自身がコールバック(呼び戻し)されると言うことです。
** 例 **
GUI環境で動作するプログラムがあり、そのウィジェット(widget:小さな部品)としてプッシュボタンがあったとします。
プッシュボタンがクリックされると、通常は何かの動作をするわけですが、その動作させたいことをコールバック関数に記述しておき、プッシュボタンが押されたときにコールバック関数が呼び出されるようにしておきます。
プログラムとしてわかりやすいのは、X Window Systemになってしまいますが、gtk+によるコールバック関数がわかりやすいのではないでしょうか。
ありがとうございました
呼び出されるほうがコールバック関数というのですね
では呼び出されることがなくて、実体はあったとしてもコールバック関数と呼ぶのでしょうか
int testa(a,b){
return(a+b);
}
//Testb(testa);
コメントアウトしたら、testaはコールバック関数ではないということでしょうか?
わかりづらくてすみません
No.4
- 回答日時:
仕事で書いているプログラムの例です。
A: デバイスドライバ
B: Aをコールするモジュール#1
C: Aをコールするモジュール#2
BがAをコールするとき、Aにコールバック関数を引数で渡す。
Aはデバイスアクセス起動。
デバイスアクセス完了後、割り込み発生。
AモジュールはBからもらったコールバック関数をコール。
Cだったら、Cからもらったコールバック関数をAがコールすることになります。
こんなイメージだと思います。
No.3
- 回答日時:
#1に回答したものです。
コールバック関数は、プログラム中から普通に呼び出されるのではなくて、GUI環境から(正確にはオペレーティングシステムから)呼び出されます。
わたしの使っているシステム(X Window System)では、
1. 関数の定義(特にコールバック関数であることは明記しない)
2. 1.で定義した関数がどのイベント(プッシュボタンが押されたとかチェックボックスがチェックされたとか)で「コールバック」されるかを定義 … シグナルコネクト(signal connect)と言います。
の2つのコードが必要になります。
** 例 **
// ボタン押されたときの関数
void button_pushed (GtkWidget *widget, gpointer *data)
{
g_print ("Button was pushed.\n");
}
int main (int argc, char *argv[])
{
.....
// 先に定義したbutton_pushed()と"clicked"(ボタンがクリックされたら)を関連付ける。
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (button_pushed), NULL);
.....
gtk_main ();
return 0;
}
No.2
- 回答日時:
コールバックの意味自体は、既に回答が出ていますが、具体例を試すのは割と簡単です。
例えば、atexitで登録する終了時関数やsignalで登録するシグナル処理ルーチンがそうです。こういったものであれば、10行程度のプログラムで確認できると思います。
#include <stdio.h>
#include <stdlib.h>
void callback(void) { puts("callback"); }
int main(void)
{
atexit(&callback);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士の先生の消息を知りたい 5 2023/03/07 03:48
- C言語・C++・C# C言語のwhileを含む関数について 2 2022/12/16 12:28
- プリンタ・スキャナー 会社のリースの複合機を替えたい 複合機の会社とのトラブルが続いて、疲れ果てました。 私は、小企業の会 4 2023/08/07 21:33
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- カップル・彼氏・彼女 職場恋愛 職場で距離が近くなりすぎて プライベートのラインの呼び名が 名字でさんづけに戻りました。 10 2023/03/21 08:58
- 会社・職場 【至急】 自分の旦那が、職場の異性の部下に対して名前呼びしていたら嫌ですか? また、自分の嫁が異性の 5 2023/01/15 09:59
- その他(悩み相談・人生相談) 1回名前で呼ばれたのに、元の呼び方に戻ったから、それを言ったら、「名前で呼ばれたいの?笑」って男子に 2 2022/08/16 21:35
- 片思い・告白 会社の同期が酔ったときはLINEで名前呼び捨てで呼んできたけれど、普通に戻ったら苗字にさん付けでした 2 2022/08/16 18:09
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
CommandButtonのCaptionを変化...
-
VBA マクロでの網掛けについて
-
TextBoxでEnterキーを押すと、...
-
VB2010 クリック数カウント
-
C#で動的に作ったtextboxを消す。
-
Access VBA でデータペーストを...
-
C♯初心者で、四則演算の電卓を...
-
VB.net webアプリケーションで...
-
バックスペース機能の作り方
-
VBA でのボタンの移動について
-
ボタンをマウスで押し続けたと...
-
ユーザーフォームに別シートか...
-
プロシージャからイベントをコ...
-
ボタン上にビットマップ、アイ...
-
VBAのボタンの位置が変わって困...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
セルをマクロのボタンにしたい。
-
Excel VBA Application.caller...
-
コマンドボタンやイメージにマ...
-
Access VBA でデータペーストを...
-
VBAのボタンの位置が変わって困...
-
ボタンをマウスで押し続けたと...
-
ボタン
-
C#プログラムで、ボタンをショ...
-
VBA でのボタンの移動について
-
閉じると「+」になり開くと「-...
-
ダウンロードダイアログをVB...
-
[Excel VBA]コマンドボタンの入...
-
ASP.Net ラベルの内容をすぐに...
-
プロシージャからイベントをコ...
-
CommandButtonのCaptionを変化...
おすすめ情報