在研究 Wayland 协议时,我发现函数以 struct 类型作为参数的代码。
#include <wayland-server.h>
static struct wl_compositor_interface compositor_interface =
{&compositor_create_surface, &compositor_create_region};
int main() {
wl_global_create (display, &wl_compositor_interface, 3, NULL,
&compositor_bind);
}
wl_global_create 的签名是
struct wl_global* wl_global_create (struct wl_display *display,
const struct wl_interface *interface,
int version,
void *data,
wl_global_bind_func_t bind)
wl_compositor_interface 是结构类型,而不是变量名。但是 wl_global_create() 将结构类型作为函数参数。有人可以解释这是如何工作的吗?
我读的源代码在这里。https://github.com/eyelash/tutorials/blob/master/wayland-compositor/wayland-compositor.c