簡體   English   中英

初始化嵌套結構數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM