[英]Static initialization of int array from within structure initialization
我正在尝试静态声明和初始化一个包含 char 和 int 数组的结构数组。
下面的例子运行良好。
typedef struct myStruct
{
char* name;
uint8_t size;
uint8_t *value;
}myStruct;
uint8_t struct1_value[] = {0x00, 0x01};
uint8_t struct2_value[] = {0x00, 0x01, 0x03, 0x04};
myStruct myStructArray[] = {
[0] = {
.name = "Struct_1",
.size = 2,
.value = struct1_value,
},
[1] = {
.name = "Struct_2",
.size = 4,
.value = struct2_value,
},
};
我找不到允许直接从myStructArray
初始化value
字段的语法
我想知道是否有一种方法可以在不必声明struct1_value
和struct2_value
变量的情况下初始化value
字段。
也许这在纯 C 中是不可能的,但是因为可以静态初始化一个char
数组,为什么不使用int
数组呢?
您可以使用复合文字。
myStruct myStructArray[] = {
[0] = {
.name = "Struct_1",
.size = 2,
.value = (uint8_t[]){0x00, 0x01},
},
[1] = {
.name = "Struct_2",
.size = 4,
.value = (uint8_t[]){0x00, 0x01, 0x03, 0x04},
},
};
value
不是数组,而是指针。 您必须通过引用其他地方存在的数组来初始化它。
实际上name
工作方式不同,因为"like this"
字符串的词法文字语法创建了一个未命名的字符数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.