Arrays 从结构初始化中静态初始化int数组
我试图静态地声明和初始化一个同时包含char和int数组的结构数组 下面的示例运行良好Arrays 从结构初始化中静态初始化int数组,arrays,c,pointers,structure,static-initialization,Arrays,C,Pointers,Structure,Static 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 myStructArra
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
我想知道是否有一种方法可以初始化值
字段,而不必声明struct1\u值
和struct2\u值
变量
也许这在纯C中是不可能的,但既然可以静态初始化char
数组,为什么不使用int
数组呢?可以使用
你可以用
value
不是数组,而是指针。
必须通过引用别处存在的数组来初始化它
实际上,
名称
的工作原理不同,因为字符串的词汇文字语法像这样创建了一个未命名的字符数组。值
不是数组,而是指针。
必须通过引用别处存在的数组来初始化它
实际上,
name
的工作原理不同,因为字符串的词汇文字语法“像这样”
创建了一个未命名的字符数组。@anastaciu哦,OP说“下面的例子很好。”但实际上它不会……是的,反复出现的问题:)@MikeCAT代码修复了,以前从未听说过复合文字。Thanks@Arkaik,好吧,只有一件事要做,UV和接受。@anastaciu哦,OP说“下面的例子很好。”但它实际上不会……是的,反复出现的问题:)@MikeCAT代码修复了,以前从未听说过复合文字。Thanks@Arkaik好吧,只有一件事要做,那就是接受。
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},
},
};