这个点语法在Pebble手表开发教程中意味着什么?

时间:2014-11-15 18:38:15

标签: c pebble-sdk

我在Pebble watch app开发教程中遇到了以下代码:

// Set handlers to manage the elements inside the Window
  window_set_window_handlers(s_main_window, (WindowHandlers) {
    .load = main_window_load,
    .unload = main_window_unload
  });

我无法理解.load和.unload的这个任务。这是标准C吗?我认为我以前从未见过类似的语法。

2 个答案:

答案 0 :(得分:7)

这是标准的c99。

它正在组合复合文字

 (WindowHandlers) {}

和指定的初始化程序

.load = main_window_load,
.unload = main_window_unload

答案 1 :(得分:4)

我认为它是标准的C99,初始化struct常量,在初始化时使用命名字段。

顺便说一下,它也是C扩展名-w.r.t.较早的C标准 - (designated initializers)由GCC

提供

对于C11标准,其最终草案n1570描述了“§6.7.9初始化”中的语法