嵌套结构/数组初始化
问题描述:
我有一个包含其他构成阵列的结构,它看起来是这样的:嵌套结构/数组初始化
typedef struct bla Bla;
typedef struct point Point;
struct point
{
int x, y;
};
struct bla
{
int another_var;
Point *foo;
};
我现在要初始化它们在全球范围内。它们旨在作为模块的描述。我试图做到这一点与C99复合文字,但是编译器(GCC)不喜欢它:
Bla test =
{
0, (Point[]) {(Point){1, 2}, (Point){3, 4}}
};
我收到以下错误:
error: initializer element is not constant error: (near initialization for 'test')
因为我不需要修改它可以根据需要放置尽可能多的“const”。有没有办法编译它?
答
你不需要文字的每个元素的化合物,只需创建一个单一的复合文字排列:
Bla test =
{
0, (Point[]) {{1, 2}, {3, 4}}
};
确保您-std=c99
编译。
这是否动态分配两个'点的内存? – aib 2008-12-16 01:28:37