2015-09-07 118 views
4

我宣佈2結構:初始化結構中的數組的

typedef struct 
{ 
    int a; 
    int b; 
}ma_Struct; 

typedef struct 
{ 
    int x; 
    ma_Struct tab[2]; 
}maStruct_2; 

目標是初始化maStruct_2的一個實例,所以我所做的是:

int main() 
{ 
ma_Struct elm1={0,1}; 
ma_Struct elm2={1,2}; 

ma_Struct tab_Elm[2]={elm1,elm2}; 
maStruct_2 maStruct_2_Instance={1,tab_Elm}; 

return 0; 
} 

,但我得到了警告在初始化程序周圍丟失大括號,我試過這種語法

maStruct_2 maStruct_2_Instance={1,{tab_Elm}}; 

但出現相同的警告。 你能幫我嗎

回答

1

在C中,你不能通過使用另一個數組名作爲初始值設定項來初始化數組。

所以這個錯誤與structs沒有任何關係,也沒有與scope或constant表達式有關。

修正你的代碼是這樣的:

maStruct_2 maStruct_2_Instance = {1, {elm1, elm2}}; 
+0

OK倫丁感謝您的回答 – fedi