Arrays 如何部分初始化结构的嵌套元素

Arrays 如何部分初始化结构的嵌套元素,arrays,c,struct,Arrays,C,Struct,初始化在另一个结构中声明的结构的元素时遇到问题 我的结构如下所示: struct finger { //其他领域 int引脚; }; 结构手套{ 食指结构; 中指结构; 指环结构; 结构手指小指; 拇指结构; }; //初始化数组 结构手套手套={.index.pin=20、.middle.pin=22、.ring.pin=24、.thumb.pin=26}; 我试图做的是,在声明glove结构时,只初始化struct finger中的pin变量 但是,我收到一条错误消息,上面说: expec

初始化在另一个结构中声明的结构的元素时遇到问题

我的结构如下所示:

struct finger
{
//其他领域
int引脚;
};
结构手套{
食指结构;
中指结构;
指环结构;
结构手指小指;
拇指结构;
};
//初始化数组
结构手套手套={.index.pin=20、.middle.pin=22、.ring.pin=24、.thumb.pin=26};
我试图做的是,在声明glove结构时,只初始化struct finger中的pin变量

但是,我收到一条错误消息,上面说:

expected primary-expression before '.' token
我的完整错误消息:

Sensor_Glove:40:24: error: expected primary-expression before '.' token

 struct Glove glove = { .index.pin = 20, .middle.pin = 22, .ring.pin = 24, .thumb.pin = 26};

                        ^

Sensor_Glove:40:41: error: expected primary-expression before '.' token

 struct Glove glove = { .index.pin = 20, .middle.pin = 22, .ring.pin = 24, .thumb.pin = 26};

                                         ^

Sensor_Glove:40:59: error: expected primary-expression before '.' token

 struct Glove glove = { .index.pin = 20, .middle.pin = 22, .ring.pin = 24, .thumb.pin = 26};

                                                           ^

Sensor_Glove:40:75: error: expected primary-expression before '.' token

 struct Glove glove = { .index.pin = 20, .middle.pin = 22, .ring.pin = 24, .thumb.pin = 26};

                                                                           ^

exit status 1
expected primary-expression before '.' token

您使用的语法对于嵌套的
struct
s的初始化无效。请参阅->嵌套初始化部分-了解有效语法

以下是您尝试实现的有效替代方案

使用指示符

struct手套={
.索引={
.pin=20
},                                                                                                 
.middle={
.pin=22
},
.ring={
.pin=24
},
.拇指={
.pin=26
},                                                                                                 
};
依赖于结构元素的声明顺序

struct glove3={
{20} ,//索引-pin
{22},//中间针
{24},//环销
{0},//pinkie-pin
{26},//拇指销
};
使用外部元素的指示符,内部元素的声明顺序

struct glove2={
.index={20},//pin=20
.middle={22},//pin=22
.ring={24},//pin=24
.thumb={26},//pin=26
};
前后矛盾

struct glove4={
.index={20},//index.pin=20
{22},//middle.pin=22
//因为我们使用的是指示符,所以我们可以更改顺序
.thumb={26},//thumb.pin=26
.pinkie={.pin=24},//pinkie.pin=24
};

您使用的语法对于嵌套的
结构的初始化无效。请参阅->嵌套初始化部分-了解有效语法

以下是您尝试实现的有效替代方案

使用指示符

struct手套={
.索引={
.pin=20
},                                                                                                 
.middle={
.pin=22
},
.ring={
.pin=24
},
.拇指={
.pin=26
},                                                                                                 
};
依赖于结构元素的声明顺序

struct glove3={
{20} ,//索引-pin
{22},//中间针
{24},//环销
{0},//pinkie-pin
{26},//拇指销
};
使用外部元素的指示符,内部元素的声明顺序

struct glove2={
.index={20},//pin=20
.middle={22},//pin=22
.ring={24},//pin=24
.thumb={26},//pin=26
};
前后矛盾

struct glove4={
.index={20},//index.pin=20
{22},//middle.pin=22
//因为我们使用的是指示符,所以我们可以更改顺序