<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=iso-8859-2">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Stejný problém nastane, pokud někdo v H o několik řádů výše a bůh
      ví kde napíše</p>
    <p>#define A Q<br>
    </p>
    <p>a váš define se změní z #define AA na #define QQ</p>
    <p>Uznávám, že tento příklad je trochu umělý, ale princip je stejný.
      Obráceně by se pak cizí makro #USE_AA stalo #USE_5 (AA = anti
      aliasing) a to už dává smysl.</p>
    <p>Nehledě na to, že bez maker se provede typová kontrola. A navíc
      časem tu funkci může volat kdokoliv odkudkoliv a pak se kontrola
      parametrů přímo v ní může hodit a assert se může v release verzi
      programu vyhodit takže ani nezpomaluje.</p>
    <p><br>
    </p>
    <p>Uznávám že preprocesor je silný nástroj, ale o přenositelnosti
      dost pochybuji. K jakému účelu byl mimochodem zamýšlen? Podle mě
      dnes kompilátor dokáže to samé lépe a rychleji a bezpečněji a
      použití preprocesoru by se mělo omezit na H soubory a #ifndef NAME
      #define NAME #endif<br>
    </p>
    <p><br>
    </p>
    <p>O.<br>
    </p>
    <p><br>
    </p>
    <br>
    <div class="moz-cite-prefix">Dne 9.7.2018 v 21:29 Jaroslav Buchta
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:d4a3dc2c-5044-fc5f-f3a9-c012ed632d8d@hascomp.cz">
      <meta http-equiv="Content-Type" content="text/html;
        charset=iso-8859-2">
      <div class="moz-cite-prefix">Uz podruhe mne mate jak AA a BB
        prechazi na A a B - ale mozna jsem to jen nepochopil...<br>
        Obecne to IMHO nejde, protoze jako argument muzete predt treba
        UdelejNeco(*((uint32_t*)1234)); a preprocesor je v ...<br>
        <br>
        Dne 09.07.2018 v 21:19 Miroslav Draxal napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:005301d417b9$cac47bd0$604d7370$@cz">
        <meta http-equiv="Content-Type" content="text/html;
          charset=iso-8859-2">
        <meta name="Generator" content="Microsoft Word 12 (filtered
          medium)">
        <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"Formátovaný v HTML Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Text bubliny Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        color:black;}
span.TextbublinyChar
        {mso-style-name:"Text bubliny Char";
        mso-style-priority:99;
        mso-style-link:"Text bubliny";
        font-family:"Tahoma","sans-serif";}
span.StylE-mailovZprvy20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.FormtovanvHTMLChar
        {mso-style-name:"Formátovaný v HTML Char";
        mso-style-priority:99;
        mso-style-link:"Formátovaný v HTML";
        font-family:Consolas;
        color:black;}
span.StylE-mailovZprvy23
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
        <div class="WordSection1">
          <p class="MsoNormal"><span style="color:#1F497D">Rozvedu to:<o:p></o:p></span></p>
          <p class="MsoNormal">#define AA 5<o:p></o:p></p>
          <p class="MsoNormal">#define BB 10<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">#if A+10+B > 200<o:p></o:p></p>
          <p class="MsoNormal">#             error "Cislo je moc velké"<o:p></o:p></p>
          <p class="MsoNormal">#endif<o:p></o:p></p>
          <p class="MsoNormal">UdelejNeco (A+10+B);<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Sem míří moje otázka. UdelejNeco je
            procedura v knihovně. Volám jej několikrát z main. To #if
            bych rád v knihovně ne v main, a aby to vyhodnocoval
            preprocesor, ne program.<o:p></o:p></p>
          <p class="MsoNormal">Snad je to popsáno správně.<o:p></o:p></p>
          <p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
          <div>
            <div style="border:none;border-top:solid #B5C4DF
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">
                  Hw-list [<a class="moz-txt-link-freetext"
                    href="mailto:hw-list-bounces@list.hw.cz"
                    moz-do-not-send="true">mailto:hw-list-bounces@list.hw.cz</a>]
                  <b>On Behalf Of </b>Jaroslav Buchta<br>
                  <b>Sent:</b> Monday, July 09, 2018 8:19 PM<br>
                  <b>To:</b> <a class="moz-txt-link-abbreviated"
                    href="mailto:hw-list@list.hw.cz"
                    moz-do-not-send="true">hw-list@list.hw.cz</a><br>
                  <b>Subject:</b> Re: C: kontrola vstupní hodnoty do
                  procedury preprocesorem.<o:p></o:p></span></p>
            </div>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <div>
            <p class="MsoNormal">Nevim jak to myslite, preprocesor je
              IMHO mocny nastroj jazyka C, ktery z nej prave dela
              idealni jazyk pro psani programu prenositelnych na ruzne
              platformy a pritom na nizke urovni.<br>
              Jen se musi pouzivat k ucelu, ke kteremu byl zamyslen...<br>
              <br>
              Nechapu presne, co tazatel chce, jestli vyhodnoceni
              argumentu pro funkci ve fazi prekladu, tak bych sel cestou
              modifikace algoritmu, aby to nebylo potreba. <br>
              <br>
              Dne 09.07.2018 v 19:22 Ondrej napsal(a):<o:p></o:p></p>
          </div>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <p>Zdravím<o:p></o:p></p>
            <p><o:p> </o:p></p>
            <p>nemohlo by pár const statických "proměnných" a inline
              funkcí a assert udělat stejnou práci. A lépe. C
              preprocesor je zlo a jeho použití nedává u modernách
              překladačů většinou moc smysl.<o:p></o:p></p>
            <p><o:p> </o:p></p>
            <p>O.<o:p></o:p></p>
            <p class="MsoNormal"><o:p> </o:p></p>
            <div>
              <p class="MsoNormal">Dne 9.7.2018 v 11:41 Miroslav Draxal
                napsal(a):<o:p></o:p></p>
            </div>
            <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
              <p class="MsoNormal">Zdravím vespolek,<o:p></o:p></p>
              <p class="MsoNormal">Lze nějakým šikovným zápisem
                kontrolovat vstupní hodnotu procedury preprocesorem? Nic
                mě nějak nenapadá.<o:p></o:p></p>
              <p class="MsoNormal"> <o:p></o:p></p>
              <p class="MsoNormal">#define AA 5<o:p></o:p></p>
              <p class="MsoNormal">#define BB 10<o:p></o:p></p>
              <p class="MsoNormal">UdelejNeco (A+10+B);<o:p></o:p></p>
              <p class="MsoNormal"> <o:p></o:p></p>
              <p class="MsoNormal">Zkontrolovat preprocesorem, aby
                hodnota řekněme nebyla větší než 200.<o:p></o:p></p>
              <p class="MsoNormal">Díky za pomoc, Míra<o:p></o:p></p>
              <p class="MsoNormal"><span
                  style="font-size:12.0pt;font-family:"Times New
                  Roman","serif""><br>
                  <br>
                  <br>
                  <o:p></o:p></span></p>
              <pre>_______________________________________________<o:p></o:p></pre>
              <pre>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" moz-do-not-send="true">www.HW.cz</a><o:p></o:p></pre>
              <pre><a href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a><o:p></o:p></pre>
              <pre><a href="http://list.hw.cz/mailman/listinfo/hw-list" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a><o:p></o:p></pre>
            </blockquote>
            <p class="MsoNormal"><span
                style="font-size:12.0pt;font-family:"Times New
                Roman","serif""><br>
                <br>
                <br>
                <br>
                <o:p></o:p></span></p>
            <pre>_______________________________________________<o:p></o:p></pre>
            <pre>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" moz-do-not-send="true">www.HW.cz</a><o:p></o:p></pre>
            <pre><a href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a><o:p></o:p></pre>
            <pre><a href="http://list.hw.cz/mailman/listinfo/hw-list" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a><o:p></o:p></pre>
          </blockquote>
          <p><o:p> </o:p></p>
        </div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
        <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" 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="mimeAttachmentHeader"></fieldset>
      <br>
      <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>
    <br>
  </body>
</html>