接口绑定

问题描述 投票:0回答:1

我正在Weston项目中研究一个名为“hmi-controller”的共享库[1]。它有以下代码片段,令我困惑的是:

/**
 * binding ivi-hmi-controller implementation
 */
static const struct ivi_hmi_controller_interface ivi_hmi_controller_implementation = {
        ivi_hmi_controller_UI_ready,
        ivi_hmi_controller_workspace_control,
        ivi_hmi_controller_switch_mode,
        ivi_hmi_controller_home
};

我不明白这里发生了什么。这个定义结构是否称为“ivi_hmi_controller_interface”?这些逗号有什么用?

[1] https://github.com/wayland-project/weston/blob/2.0/ivi-shell/hmi-controller.c

c struct shared-libraries
1个回答
2
投票

你可以分解它来理解它:

static const struct ivi_hmi_controller_interface

这部分声明了static const常数。根据它在源代码中的位置,它也是一个全局常量。在C中,您需要为使用它时定义的任何结构标识符添加struct。所以它后面的标识符是struct ivi_hmi_controller_interface类型

ivi_hmi_controller_implementation = { ....

您可以在此处定义标识符。之后,您可以通过此名称引用此全局常量。

... = {
    ivi_hmi_controller_UI_ready,
    ivi_hmi_controller_workspace_control,
    ivi_hmi_controller_switch_mode,
    ivi_hmi_controller_home
};

这就是你的常量结构实际意味着什么。

© www.soinside.com 2019 - 2024. All rights reserved.