如何分配一个C结构内联?

typedef struct { int hour; int min; int sec; } counter_t; 

而在代码中,我想初始化这个结构的实例,而不显式初始化每个成员variables。 也就是说,我想要做一些事情:

 counter_t counter; counter = {10,30,47}; //doesn't work 

10:30:47

而不是

 counter.hour = 10; counter.min = 30; counter.sec = 47; 

不要回想这个语法,并没有立即find一个方法来做到这一点从谷歌search。

谢谢!

初始化:

 counter_t c = {10, 30, 47}; 

分配:

 c = (counter_t){10, 30, 48}; 

后者被称为“复合文字”。

为了可维护性,我更喜欢带有明确标识variables的列表语法,如下所示:

 counter_t counter = {.hour = 10, .min = 30, .sec = 47}; 

或者返回内联,例如:

 return (struct counter_t){.hour = 10, .min = 30, .sec = 47}; 

我可以想象一个场景,其中声明variables的顺序是变化的,如果你没有明确标识你的variables,你将不得不通过所有的代码来修改variables的顺序。 这样,我认为它更清洁,更具可读性