struct mit arrays initialisieren



  • hi,
    angenommen ich hab sowas

    typedef struct __TEST
    {
      int member1[73];
      int member2[59];
      int member3[156];
    } TEST;
    

    wenn ich die so initialisiere

    ...
    TEST t = 
    {
      1,2,3,4,5,....., // 73 mal igendwas
      1,2,3,4,5......, // 59 mal irgendwas
      100
    };
    ...
    

    landet die 100 dann *garantiert und immer* in t.member3[0]
    oder ist daran irgendwas 'undefiniertes'?

    danke im voraus...



  • Soweit ich das weiß, landet die 100, dann "garantiert und immer" in t.member2[59] (das sollte, wenn kein Padding dazwischenschlägt, mit member3[0] zusammenfallen) - eventuell könntest du die einzelnen Array-Initialisierer jeweils in Klammern einfassen, um die Zuordnung zu ermöglichen:

    TEST t =
    {
      {1,2,3,4,...}, //member1
      {1,2,3,4,...}, //member2
      {100,101,...}  //member3
    };
    


  • CStoll schrieb:

    Soweit ich das weiß, landet die 100, dann "garantiert und immer" in t.member2[59] (das sollte, wenn kein Padding dazwischenschlägt, mit member3[0] zusammenfallen) - eventuell könntest du die einzelnen Array-Initialisierer jeweils in Klammern einfassen, um die Zuordnung zu ermöglichen:

    um sowas wie padding und alignment geht's mir. eigentlich 'weiss' der compiler doch wie er die struct anlegt und sollte beim initialisieren padding etc. berücksichtigen - auch ohne extra zu klammern. ist das so?


Anmelden zum Antworten