我正在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
你可以分解它来理解它:
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
};
这就是你的常量结构实际意味着什么。