<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Historie nás učí. To už říkal nějaký velikán. Nebyl to Lenin?<br>
    <br>
    O Vašem konkrétním nasazení nevím nic. Takže musím mluvit obecně.<br>
    <br>
    Zamyslel bych se nad tím, jestli se takový postup používá i jinde. A
    pokud ne, tak proč ne.<br>
    Proč se nepoužívá třeba u knihoven Windows nebo Linux, které
    používají desítky a stovky tisíc programátorů?<br>
    A jistě jsou použity ve velmi rozmanitém nasazení. Zřejmě širším,
    než jaké připadá v úvahu u Vašeho řešení. A kde by nějaká modifikace
    spíš mohla být potřebná.<br>
    <br>
    Pokud se používá nějaká standardní knihovní funkce (třeba
    "spocti(x,y)"), a časem se ukáže, že by parametry měly být
    obsažnější, tak vznikne něco jako "spocti_ex(x,y,z)" se širšími
    parametry.<br>
    <br>
    Pokud víte, že má smysl Vaši strukturu rozšiřovat - tak proč ji
    nerozšíříte rovnou?<br>
    A pokud to rozšíření nedává smysl Vám (autorovi), tak jaká je
    pravděpodobnost, že bude dávat smysl někomu jinému?<br>
    <br>
    A pokud už by mu přece jen dávala smysl, tak stejně nějakou
    kompatibilitu bude mít jen na úrovni zdrojáku, ne hotových knihoven.
    Tak proč by si to nepřidal přímo do toho původního *.h?<br>
    Nějaká binární zpětná kompatibilita možná nebude, protože dříve
    přeložené knihovny by nic nevěděly o tom, že si uživatel ve svém
    programu strukturu natáhl.<br>
    <br>
    Takže tu svou původní poznámku (na kterou jste reagoval) jsem
    nemyslel tak, jak jinak to technicky vymyslet.<br>
    Ale spíš jak to vymyslet koncepčně. A zamyslet se, jestli
    variabilita opravdu k něčemu je.<br>
    <br>
    PL<br>
    <br>
    ********************<br>
    <br>
    <div class="moz-cite-prefix">Dne 8.5.2024 v 7:39 Martin Záruba
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:fbfcfa94-8cf9-4468-8b09-ca86a9647d23@volny.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p><font face="Arial">Proto jsem to sem napsal. Jak byste to
          udělal jinak?<br>
        </font></p>
      <p><font face="Arial">Potřebuji, aby z dat vznikl souvislý blok,
          který bude čten nadřazeným systémem jako souvislá oblast
          paměti. Bude obsahovat tu moji strukturu, což jsou ve
          skutečnosti data z bms. A za ní uživatelem specifikovaná
          (možná jím budu já, ale chci zajistit, aby do toho modulu bms
          se nemuselo zasahovat), která nevím, co přesně budou
          obsahovat. Nenapadá mě zatím jiný způsob. Přes pointer to
          nejde, musím být schopen odeslat data, ne pointer.</font></p>
      <p><font face="Arial">Prostě #define user .... musí být před
          #include. Jinak kompilátor řve, že struktura prvky, které jsou
          použité neobsahuje.<br>
        </font></p>
      <pre class="moz-signature" cols="72">Martin Záruba</pre>
      <div class="moz-cite-prefix">Dne 7.5.2024 v 20:34 Petr Labaj
        napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:62322832-3bec-a730-4f91-449b493d1ab0@volny.cz">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        Položil bych si 2 otázky:<br>
        - Je to dobrý nápad? Opravdu je to nejvhodnější způsob a není
        lepší to udělat nějak jinak?<br>
        - Bude zajištěno, že v době kdy se bude zpracovávat ten muj.h už
        je zpracován ten header, kde je případně definováno USER? Tohle
        se (predpokládám) zpracovává jednoprůchodově.<br>
        <br>
        PL<br>
        <br>
        *******************<br>
        <br>
        <div class="moz-cite-prefix">Dne 7.5.2024 v 18:02 Martin Záruba
          napsal(a):<br>
        </div>
        <blockquote type="cite"
          cite="mid:dc0e3d33-9d1d-4168-9a58-74d22f006cbc@volny.cz">
          <meta http-equiv="content-type" content="text/html;
            charset=UTF-8">
          <p>Mám soubor, třeba muj.h ve kterém je deklarovaná struktura
            x, třeba</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;"> </span><span style="color: #434f54;">{</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;">  int b;
</span></div><span style="color: #434f54;">}</span><span style="color: #4e5b61;"> x;</span></div>
          <p>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:</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;"> stru </span><span style="color: #434f54;">{</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;">  int b;
</span></div><div><span style="color: #728e00;">#ifdef</span><span style="color: #4e5b61;"> </span><span style="color: #d35400;">user</span></div><div><span style="color: #4e5b61;">  user</span></div><div><span style="color: #728e00;">#endif</span><span style="color: #4e5b61;">  </span></div><div><span style="color: #434f54;">}</span><span style="color: #4e5b61;">;</span></div></div>
          <p>A v uživatelském programu použít</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: #728e00;">#define</span><span style="color: #4e5b61;"> </span><span style="color: #d35400;">user</span><span style="color: #4e5b61;"> </span><span style="color: #005c5f;">\</span></div><div><span style="color: #4e5b61;">        </span><span style="color: #00979d;">int</span><span style="color: #4e5b61;"> c; </span><span style="color: #005c5f;">\</span></div><div><span style="color: #4e5b61;">        </span><span style="color: #00979d;">int</span><span style="color: #4e5b61;"> d;</span></div>

</div>
          <p>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>
          </p>
          <p>Je na tom něco v nepořádku nebo to lze udělat líp?<br>
          </p>
          <p><br>
          </p>
          <pre class="moz-signature" cols="72">-- 

Martin Záruba</pre>
          <br>
        </blockquote>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>