将函数调用中的结构实例化为参数

时间:2014-07-21 14:32:14

标签: c struct

this对Hacker News的评论中,提到了这种语法:

 func((struct somestruct){.x = 0, .y = 1});

有人可以告诉我这是什么叫做,然后给出一个完整的函数声明示例吗? (不是这个确切的函数调用,只是这个概念的完整演示。)或者指出一些资源,我可以在这里了解更多。谢谢!

编辑:随意评论你为何投票。

2 个答案:

答案 0 :(得分:2)

  

有人可以告诉我这叫做什么

(){}运算符称为复合文字运算符,使用其名称初始化结构成员称为指定的初始值函数。复合文字和指定的初始化器都是c99中引入的特性。

复合文字在c99中的6.5.2.5和6.7.8中的指定初始化器中描述。

答案 1 :(得分:2)

这是复合文字。这将创建一个struct somestruct的实例,该实例在函数调用表达式的末尾消失,并将其传递给func。

该功能的签名只是:

[whatever] func(struct somestruct arg);