0

这是从结构类型本身可以传递给函数作为c中的参数提出的问题吗?

从上一个问题中,我发现“wl_compositor_interface”在头文件“wayland-server-protocol.h”中都用作结构标记和变量。

struct wl_compositor_interface {
         void (*create_surface)(struct wl_client *client,
                                struct wl_resource *resource,
                                uint32_t id);
         void (*create_region)(struct wl_client *client,
                               struct wl_resource *resource,
                               uint32_t id);
 };


extern const struct wl_interface wl_compositor_interface;

但是,头文件刚刚声明了变量,因为extern const struct wl_interface wl_compositor_interface;我找不到变量的定义位置。同样,所有具有模式“wl_***_interface”的变量都在头文件中声明但没有定义。有人可以帮我找到定义吗?wayland 源代码在这里wayland github

我还查看了文档,没有关于 wl_***_interface 的描述

4

1 回答 1

0

这是因为struct wl_interface wl_compositor_interface绑定到 wl_compositor 全局时必须使用的 - 在生成的协议代码中,通常在$SRC/protocol/wayland-protocol.c.

struct wl_compositor_interface是合成器用来注册函数的结构,它将接收来自客户端的请求(对于它自己的 wl_resource 结构,代表客户端看到的合成器全局)。

于 2017-07-27T08:09:25.767 回答