在C语言中,我定义了如下的
struct
结构体,并希望进行内联初始化。在初始化后,结构体内部的字段和数组foos
都不会再改变。第一个代码块的代码可以正常工作。struct Foo {
int bar;
int *some_array;
};
typedef struct Foo Foo;
int tmp[] = {11, 22, 33};
struct Foo foos[] = { {123, tmp} };
然而,我并不需要 tmp
字段。实际上,它只会让我的代码变得杂乱无章(这个例子有点简化了)。因此,我想在声明 foos
的同时声明 some_array
的值。但是我无法找到正确的语法。也许应该以不同的方式定义 some_array
字段?
int tmp[] = {11, 22, 33};
struct Foo foos[] = {
{123, tmp}, // works
{222, {11, 22, 33}}, // doesn't compile
{222, new int[]{11, 22, 33}}, // doesn't compile
{222, (int*){11, 22, 33}}, // doesn't compile
{222, (int[]){11, 22, 33}}, // compiles, wrong values in array
};