<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">Ted jsem se do toho zamotal teda taky,
      musel bych si to vyzkouset.</div>
    <div class="moz-cite-prefix">Ale mam podezreni, ze <br>
    </div>
    <div class="moz-cite-prefix">struct{ <br>
       struct x; <br>
       int c; <br>
       int d; <br>
      }x_ext; <br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">vytvori strukturu x s delkou 0B a nicim
      uvnitr a nijak nesouvisi s globalni promennou x ? Zkusil bych
      udelat ruzne identifikatory.<br>
    </div>
    <div class="moz-cite-prefix">V tom novem prikladu to prekladac
      pobere? Nemelo by byt: struct y x;    ?</div>
    <div class="moz-cite-prefix">Protoze y je jmeno struktury a x v
      prvnim bloku je instance promenne te struktury myslim...<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Dne 08.05.2024 v 10:33 Martin Záruba
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:04eca30c-d8ce-4506-bf70-6a93572bc55d@volny.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p><font face="Arial">Nějak mi to hlava nebere. Pokud napíšu:</font></p>
      <div
style="color: #4e5b61;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span
      style="color: #00979d;">struct</span><span style="color: #4e5b61;"> y</span><span
      style="color: #434f54;">{</span></div><div><span
      style="color: #4e5b61;"> </span><span style="color: #00979d;">size_t</span><span
      style="color: #4e5b61;"> size;</span></div><div><span
      style="color: #4e5b61;"> </span><span style="color: #00979d;">int</span><span
      style="color: #4e5b61;"> a;</span></div><div><span
      style="color: #4e5b61;"> </span><span style="color: #00979d;">int</span><span
      style="color: #4e5b61;"> b;</span></div><div><span
      style="color: #434f54;">}</span><span style="color: #4e5b61;">x;</span></div>


<div><span style="color: #00979d;">struct</span><span
      style="color: #434f54;">{</span></div><div><span
      style="color: #4e5b61;"> y x;</span></div><div><span
      style="color: #4e5b61;"> </span><span style="color: #00979d;">int</span><span
      style="color: #4e5b61;"> c;</span></div><div><span
      style="color: #4e5b61;"> </span><span style="color: #00979d;">int</span><span
      style="color: #4e5b61;"> d;</span></div><div><span
      style="color: #434f54;">}</span><span style="color: #4e5b61;">x_ext; </span></div></div>
      <p><font face="Arial">říkám že struktura x_ext má na začátku
          strukturu x kterou popisuje y. Pak se na prvky v ní mohu
          odkazovat </font></p>
      <p><font face="Arial">x_ext.x.a</font></p>
      <p><font face="Arial">ale pokud místo y v druhé struktuře použiju
          slovo struct, znamená to, že vznikne to samé, ale prvky z
          první struktury jsou nedostupné? Pokud ano, k čemu je to
          dobré? </font></p>
      <p><font face="Arial">Pokud to ale udělám, tak, jak jsem to
          napsal, vznikly dvě proměnné x a x_ext. Logicky pokud změním
          x.a nezmění se x_ext.x.a. Takže to nejde takto použít.<br>
        </font></p>
      <p><font face="Arial">Jenže já potřebuji, aby se původní
          struktura, v našem příkladu x </font></p>
      <p><font face="Arial">1) rozšířila o prvky c, d přičemž všechny
          prvky (nejen ty nové) byly dostupné</font></p>
      <p><font face="Arial">2) aby struktura obsazovala souvislou oblast
          paměti. Tato oblast se pak předává jako pointer a délka
          rutině, která přes ethernet data přenese na server. Je docela
          složitá a nechci, aby se do ní muselo vrtat. Pouze zavolat s
          těmito dvěma parametry.<br>
        </font></p>
      <pre class="moz-signature" cols="72">Martin Záruba</pre>
      <div class="moz-cite-prefix">Dne 8.5.2024 v 9:34 Jaroslav Buchta
        napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:c6cf51c2-8ffd-4350-be33-080a1e636042@hascomp.cz">
        <meta http-equiv="Content-Type"
          content="text/html; charset=UTF-8">
        <div class="moz-cite-prefix">x ale neni promenna ale jmeno
          struktury. To je to same, jako byste ji tam rozepsal treba
          jako mam v prikladu.<br>
        </div>
        <div class="moz-cite-prefix">promenna treba y by se definovala <br>
        </div>
        <div class="moz-cite-prefix">struct x y;<br>
        </div>
        <div class="moz-cite-prefix"><br>
        </div>
        <div class="moz-cite-prefix">Dne 08.05.2024 v 9:30 Martin Záruba
          napsal(a):<br>
        </div>
        <blockquote type="cite"
          cite="mid:227a9b36-2b3c-4585-bbbc-1a48fb729252@volny.cz">
          <meta http-equiv="Content-Type"
            content="text/html; charset=UTF-8">
          <p><font face="Arial">Tomu rozumím, ale nějak mi nedochází, co
              vznikne z. Do struktury pochopitelně mohu vložit další
              strukturu, ale co se stane, když vložím PROMĚNNOU typu
              struct, což je v té druhé definici.<br>
            </font></p>
          <p>struct{ <br>
             size_t size; <br>
             int a; <br>
             int b; <br>
            }x; <br>
            <br>
            struct{ <br>
             struct x; <br>
             int c; <br>
             int d; <br>
            }x_ext; </p>
          <p><font face="Arial">Tedy co vlastně obsahuje x_ext<br>
            </font></p>
          <pre class="moz-signature" cols="72">Martin Záruba</pre>
          <div class="moz-cite-prefix">Dne 8.5.2024 v 9:09 Jaroslav
            Buchta napsal(a):<br>
          </div>
          <blockquote type="cite"
            cite="mid:17fb8aac-bf5f-4a35-9d28-4e8afbdc02ac@hascomp.cz">
            <meta http-equiv="Content-Type"
              content="text/html; charset=UTF-8">
            <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"
              moz-do-not-send="true">www.HW.cz</a>
<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>
<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>
</pre>
            </blockquote>
            <p><br>
            </p>
            <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"
            moz-do-not-send="true">www.HW.cz</a>
<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>
<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>
</pre>
          </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"
          moz-do-not-send="true">www.HW.cz</a>
<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>
<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>
</pre>
        </blockquote>
        <p><br>
        </p>
        <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"
        moz-do-not-send="true">www.HW.cz</a>
<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>
<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>
</pre>
      </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>