这个C函数语法是什么?

参见英文答案 > What does this dot syntax mean in the Pebble watch development tutorial? 2个
我说我在c语言编程方面有中级经验,但是我从来没有见过这个语法用来创建函数.这让我想起了JQuery事件的语法.总的来说,我想详细解释这是什么以及替代语法可能是什么.我可以更好地阅读更多有关此内容链接也很棒.
// 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
  });

这是Pebble WatchApp tutorial代码片段.

解决方法

这是一个使用复合文字函数调用.它相当于以下内容
WindowHandlers temp = {
    .load = main_window_load,.unload = main_window_unload
  };
window_set_window_handlers(s_main_window,temp );

上面还使用了指定的初始值设定项,您可以在其中指定要按名称初始化的字段.

假设WindowHandlers只包含该顺序的加载和卸载,则上述内容相当于:

WindowHandlers temp = { main_window_load,main_window_unload };
window_set_window_handlers(s_main_window,temp );

C standard更详细地介绍了这些内容.

从6.5.2.5节:

4 A postfix expression that consists of a parenthesized type
name followed by a brace-enclosed list of initializers is a
compound literal. It provides an unnamed object whose value is
given by the initializer list.

9 EXAMPLE 1 The file scope deFinition

06002

initializes p to point to the first element of an array of
two ints,the first having the value two and the second,four.
The expressions in this compound literal are required to be
constant. The unnamed object has static storage duration.

从第6.7.8节开始:

1

06003

7 If a designator has the form

06004

then the current object (defined below) shall have structure
or union type and the identifier shall be the name of a member of
that type.

34 EXAMPLE 10 Structure members can be initialized to nonzero values without depending on their order:

06005

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...