[英]initializing a nested struct array
我正在嘗試初始化嵌套結構數組。
這是我在做什么:
// init a nested struct
struct L1 {
struct L2 {
int i[4];
} l2[3];
};
L1::L2 l2 = {1,2,3,4};
L1::L2 l2_a[] = { {1,2,3}, {1,2}, {1,2,3,4}};
L1 l1 = {
{{1,2,3}, {1,2}, {1,2,3,4}}
};
L1 l1_a0 = {};
L1 l1_a1 = {0};
L1 l1_a[] = {
{{1,2,3}, {1,2}, {1,2,3,4}},
{{1,2,3}, {1,2}, {1,2,3,4}}
}; // ... error: too many initializers for 'L1'
根據上面發生的正確情況,我希望派生的最后一行(初始化嵌套結構的數組)正確,但是令我驚訝的是,編譯器不喜歡它。
可以做到嗎? 這是有關初始化嵌套結構的相關文章。 順便說一句,我正在使用g ++。
是的,您可以:始終編譯-Wall
另一個原因,因為編譯器會向您提供有用的警告,例如:
警告:“ L1 :: L2 [3]”的初始化程序缺少大括號
最終結果不是很好,但是最終浪費了編譯器輸出的電傳硬拷貝上更少的樹:
在此處實時查看: http : //ideone.com/YKq3d
struct L1 {
struct L2 {
int i[4];
} l2[3];
};
L1::L2 l2 = { {1,2,3,4} };
L1::L2 l2_a[] = { {{1,2,3}}, {{1,2}}, {{1,2,3,4}}};
L1 l1 = {
{{{1,2,3}}, {{1,2}}, {{1,2,3,4}}}
};
L1 l1_a0 = {};
L1 l1_a1 = {{{{0}}}};
L1 l1_a[] = {
{{{{1,2,3}}, {{1,2}}, {{1,2,3,4}}}},
{{{{1,2,3}}, {{1,2}}, {{1,2,3,4}}}}
}; // ... sweet potatoes!
int main()
{
return 0;
}
L1 l1_a[] = { // l1_a
{ // l1_a[0]
{ // l1_a[0].l2
{ // l1_a[0].l2[0]
{1,2,3,4} // l1_a[0].l2[0].i
},
{
{1,2,3,4}
},
{
{1,2,3,4}
}
}
},
{
{
{
{1,2,3,4}
},
{
{1,2,3,4}
},
{
{1,2,3,4}
}
}
},
{
{
{
{1,2,3,4}
},
{
{1,2,3,4}
},
{
{1,2,3,4}
}
}
},
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.