関数ポインターの例であり、Linuxカーネルソースから取得したコードがあります。以下は、メンバーとしてコールバック関数を持つ構造です
struct parport_driver {
const char *name;
void (*attach) (struct parport *);
struct parport_driver *next;
};
これらの構造体のメンバーは、以下のように C ファイルで呼び出されます
struct parport_driver *drv;
drv->attach(port); /* calling function through implicit dereference */
上記の関数は暗黙的な方法で呼び出されますが、明示的な方法でどのように呼び出されるか知りたいです。
関数ポインタを逆参照する暗黙的方法と明示的方法の違いは何ですか。
もう1つ知りたいことは、呼び出しの前に構造体メンバーのアタッチを初期化する必要があることです (drv->attach(port));
みたいな
drv->attach=attach_driver_chain;
どこで attach_driver_chain は関数ですが、ドライバーコードでそのような初期化を見つけることができませんでした。