嵌套结构/数组初始化

问题描述:

我有一个包含其他构成阵列的结构,它看起来是这样的:嵌套结构/数组初始化


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编译。

+0

这是否动态分配两个'点的内存? – aib 2008-12-16 01:28:37