<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">size je tam podle me pro kontrolu, ze
      je struktura spravneho typu a navic si pak muze funkce rozlisit,
      jakeho konkretniho typu, pokud je vic variant. Pokud potrebuje jen
      tu zakladni, tak ta je k dispozici vzdy, pokud chce pristupovat na
      nejake rozsireni, mela by si aspon zkontrolovat velikost, jestli
      nesaha mimo.</div>
    <div class="moz-cite-prefix">A soucasti struktury mohou byt dalsi
      struktury, uniony, pole... To prekladac pochopi spravne a proste
      to tam vlozi. Pokud je vlozena struktura nepojmenovana, pristupuje
      se k prvkum jako by to struktura nebyla, predpokladam.</div>
    <div class="moz-cite-prefix">takze kdyz napisu:</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">union {</div>
    <div class="moz-cite-prefix">    struct {</div>
    <div class="moz-cite-prefix">        int a;</div>
    <div class="moz-cite-prefix">        int b;<br>
    </div>
    <div class="moz-cite-prefix">    };</div>
    <div class="moz-cite-prefix">    char c[256];<br>
    </div>
    <div class="moz-cite-prefix">} u;<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">tak muzu psat u.x[0] = 1;  u.a = 123;
      ...</div>
    <div class="moz-cite-prefix">samozrejme musi byt ruzne
      identifikatory, typicky je to zajisteno nejakym prefixem.<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Dne 08.05.2024 v 7:58 Martin Záruba
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:dda96738-e877-495e-8a3f-55444b69fc18@volny.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p><font face="Arial">Nějak mám dlouhé vedení....</font></p>
      <p><font face="Arial">K čemu je size_t size; v strukturách?</font></p>
      <p><font face="Arial">Jak se při použití x_ext v posledním zápisu
          struktury dostanu na prvek a? Není mi jasné, co kompilátor
          vytvořil z poslední definice x_ext, protože neřve. Ale x přece
          není popis struktury, ale proměnná typu struct<br>
        </font></p>
      <p><font face="Arial"><br>
        </font></p>
      <pre class="moz-signature" cols="72">Martin Záruba</pre>
      <div class="moz-cite-prefix">Dne 7.5.2024 v 23:27 Miroslav Šinko
        napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:47c3281b-ac77-3b9a-c947-8a4a67857971@gmail.com">Inspirujte
        sa napr. vo WinAPI. Nejdem nic kopirovat, napisem pointu: <br>
        <br>
        struct{ <br>
         size_t size; <br>
         int a; <br>
         int b; <br>
        }x; <br>
        <br>
        Potom si niekto moze spravit: <br>
        struct{ <br>
         size_t size; <br>
         int a; <br>
         int b; <br>
         int c; <br>
         int d; <br>
        }x_ext; <br>
        <br>
        Aby nebolo treba copy/paste, tak takto: <br>
        struct{ <br>
         struct x; <br>
         int c; <br>
         int d; <br>
        }x_ext; <br>
        <br>
        Kazdy je povinny pri naplnani struktury vyplnit
        size=sizeof(<moja_struktura>) a pri pouziti si
        skontrolovat size, ci mozem pristupovat na premenne svojej
        struktury. <br>
        <br>
        miro <br>
        <br>
        <br>
        On 7.5.2024 18:02, Martin Záruba wrote: <br>
        <blockquote type="cite">Mám soubor, třeba muj.h ve kterém je
          deklarovaná struktura x, třeba <br>
          <br>
          struct{ <br>
          inta; <br>
          int b; <br>
          }x; <br>
          <br>
          Soubor je pomocí include vložen do hlavního programu. A já
          bych potřeboval, aby uživatel, který použije #include muj.h
          mohl do té struktury vložit další prvky, takže struktura by se
          o tyto prvky (které v ní nejsou definované) rozšířila.
          Vymyslel jsem toto: <br>
          <br>
          structstru { <br>
          inta; <br>
          int b; <br>
          #ifdefuser <br>
             user <br>
          #endif <br>
          }; <br>
          <br>
          A v uživatelském programu použít <br>
          <br>
          #defineuser\ <br>
          intc; \ <br>
          intd; <br>
          <br>
          Asi to vypadá jako divný požadavek, ale mě jde o to, aby
          struktura x byl jeden prvek, který obsahuje jak mé, tak
          uživatelem vytvořené členy. <br>
          <br>
          Je na tom něco v nepořádku nebo to lze udělat líp? <br>
          <br>
          <br>
          -- <br>
          <br>
          Martin Záruba <br>
          <br>
          <br>
          <br>
          _______________________________________________ <br>
          HW-list mailing list  -  sponsored by <a
            class="moz-txt-link-abbreviated" href="http://www.HW.cz"
            moz-do-not-send="true">www.HW.cz</a> <br>
          <a class="moz-txt-link-abbreviated moz-txt-link-freetext"
            href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
          <br>
          <a class="moz-txt-link-freetext"
            href="http://list.hw.cz/mailman/listinfo/hw-list"
            moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
          <br>
          <br>
        </blockquote>
        _______________________________________________ <br>
        HW-list mailing list  -  sponsored by <a
          class="moz-txt-link-abbreviated" href="http://www.HW.cz"
          moz-do-not-send="true">www.HW.cz</a> <br>
        <a class="moz-txt-link-abbreviated moz-txt-link-freetext"
          href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
        <br>
        <a class="moz-txt-link-freetext"
          href="http://list.hw.cz/mailman/listinfo/hw-list"
          moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
        <br>
      </blockquote>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>