3

我在 Pebble 手表应用程序开发教程中遇到了以下代码:

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

4

2 回答 2

7

这是标准的 c99。

它结合了复合文字

 (WindowHandlers) {}

和指定的初始化器

.load = main_window_load,
.unload = main_window_unload
于 2014-11-15T18:43:21.743 回答
4

我相信它是标准的 C99,在其初始化中有一个struct带有命名字段的初始化常量。

顺便说一句,它也是GCC提供的 C 扩展 -wrt ​​较旧的 C 标准 - (指定的初始化程序

对于C11标准,其最终草案n1570在“§6.7.9 Initializations”中描述了该语法

于 2014-11-15T18:40:07.543 回答