typedef void(*something)(someclass*something) - 这是什么意思?从未见过像这样的typedef用法

Rac*_*hel 1 c linux-kernel

我正在阅读linux内核代码,遇到类似以下内容:

typedef void (* gps_location_callback)(GpsLocation* location?
Run Code Online (Sandbox Code Playgroud)

然后它可以像以下一样使用:

gps_location_callback location_cb;
Run Code Online (Sandbox Code Playgroud)

有人能告诉我这种typedef是什么意思吗?我以前从未见过这样的东西..谢谢!

Ker*_* SB 5

这是一个函数指针.这种类型的变量指向一个函数,其签名是void (GpsLocation*):

void foo(GpsLocation *);

gps_location_callback f = foo;

// now use f(p) etc
Run Code Online (Sandbox Code Playgroud)

没有typedef你必须写:

void (*f)(GpsLocation *) = foo;
Run Code Online (Sandbox Code Playgroud)