<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><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:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
@font-face
        {font-family:"Times New Roman \, serif";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* 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.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.TextbublinyChar
        {mso-style-name:"Text bubliny Char";
        mso-style-priority:99;
        mso-style-link:"Text bubliny";
        font-family:"Tahoma","sans-serif";}
span.StylE-mailovZprvy22
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.StylE-mailovZprvy23
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.StylE-mailovZprvy24
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.StylE-mailovZprvy25
        {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]--></head><body bgcolor=white lang=CS link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Do teď to dělám tak, že mám v dané funkci kontrolu vstupních hodnot udělanou (xc8)<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>__conditional_software_breakpoint(!(A+10+B > 200));<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Překládá to jenom v DEBUG. V Relase se to vypustí. Ale říkal jsem si, jestli by to nešlo nějak pomocí preprocesoru, ale jak jsem psal, nic mě nenapadalo.Takže možnost </span><span style='color:#1F497D'>snaha realizovat první myšlenku.</span><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Míra<o:p></o:p></span></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 [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Marek Hummel<br><b>Sent:</b> Monday, July 09, 2018 9:50 PM<br><b>To:</b> HW-news<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><p class=MsoNormal><span style='color:#1F497D'>Dobry den,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>A je velky problém provest kontrolu na urovni kodu ve funkci, tak jak je to obvykle. Co je důvodem zamysleneho reseni, uspora mista, rychlost nebo snaha realizovat prvni myslenku jak dany problém vyresit </span><span style='font-family:Wingdings;color:#1F497D'>J</span><span style='color:#1F497D'>.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Marek<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='color:windowtext'>From:</span></b><span style='color:windowtext'> Hw-list [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Jaroslav Buchta<br><b>Sent:</b> Monday, July 9, 2018 9:29 PM<br><b>To:</b> hw-list@list.hw.cz<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>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):<span style='font-size:12.0pt'><o:p></o:p></span></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal><span style='color:#1F497D'>Rozvedu to:</span><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> <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'> </span><o:p></o:p></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 href="mailto:hw-list-bounces@list.hw.cz">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 href="mailto:hw-list@list.hw.cz">hw-list@list.hw.cz</a><br><b>Subject:</b> Re: C: kontrola vstupní hodnoty do procedury preprocesorem.</span><o:p></o:p></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 style='margin-bottom:12.0pt'><span style='font-size:12.0pt;font-family:"Times New Roman , serif","serif"'><br><br><br></span><o:p></o:p></p><pre>_______________________________________________<o:p></o:p></pre><pre>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz">www.HW.cz</a><o:p></o:p></pre><pre><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><o:p></o:p></pre><pre><a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><o:p></o:p></pre></blockquote><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:12.0pt;font-family:"Times New Roman , serif","serif"'><br><br><br><br></span><o:p></o:p></p><pre>_______________________________________________<o:p></o:p></pre><pre>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz">www.HW.cz</a><o:p></o:p></pre><pre><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><o:p></o:p></pre><pre><a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><o:p></o:p></pre></blockquote><p> <o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><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">www.HW.cz</a><o:p></o:p></pre><pre><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><o:p></o:p></pre><pre><a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><o:p></o:p></pre></blockquote><p><o:p> </o:p></p></div></body></html>