1

wayland プロトコルを研究しているときに、関数が構造体型をパラメーターとして受け取るコードを見つけました。

#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

4

1 に答える 1