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

我在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吗? 我不认为我以前见过类似的语法。

这是标准的c99。

它结合了复合文字

  (WindowHandlers) {} 

和指定的初始化者

 .load = main_window_load, .unload = main_window_unload 

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

顺便说一句,它也是C扩展 – 由GCC提供的旧C标准 – ( 指定的初始化器 )

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