2008-12-12 222 views
5

我有一個包含其他構成陣列的結構,它看起來是這樣的:嵌套結構/數組初始化


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」。有沒有辦法編譯它?

回答

5

你不需要文字的每個元素的化合物,只需創建一個單一的複合文字排列:

Bla test = 
{ 
    0, (Point[]) {{1, 2}, {3, 4}} 
}; 

確保您-std=c99編譯。

+0

這是否動態分配兩個'點的內存? – aib 2008-12-16 01:28:37