在 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
领域。事实上,它只会弄乱我的代码(这个例子有点简化)。所以,我想在声明中some_array
声明foos
. 不过,我无法获得正确的语法。也许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
};