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
//因为我们使用的是指示符,所以我们可以更改顺序