Arrays 从结构初始化中静态初始化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

我试图静态地声明和初始化一个同时包含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

我想知道是否有一种方法可以初始化
字段,而不必声明
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},
    },
};