Jsonパーサの自作ーその3
令和2年3月4日水曜日。コールバック関数について調べました。
コールバック関数とは、C言語においては、関数ポインタをサブルーチンに渡して、そこで処理をすること。
ざっくりとこんな説明になります。
関数ポインタとは、関数のエントリをポインタに紐づけてやることです。
凡例は以下の通りです。
ただ、引数付きで関数ポインタを渡すよう定義しましたが、
呼び出し元で、引数をつけてしまうとエラーを返します。
関数ポインタで渡したい関数の引数リストは飾りみたいなものです。
実際、カッコが気で引数を渡そうとするとエラーを返してしまうのです。
何のためのコールバック関数が使われるのか、よくわかりません。
技術的には不可能ではないということが分かったわけですが、
一体何のために使うのかという点については疑問が残ったままです。
mingw32
#include <stdio.h>
void Koneko(void (*callback)(int), int num)
{
callback(num);
}
void Hello(int num)
{
printf("Hello %d\n", num);
}
int main(void)
{
Koneko(Hello, 100);
return 0;
}