<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=utf-8"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><title>Re: C: #define, XC8</title><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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
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;}
span.StylE-mailovZprvy17
        {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 lang=CS link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>To je mi jasné, ale není mi jasné, jak inline funkci předhodím parametr funkce buď uint8_t nebo uint16_t<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Static online void delay_ms(????? DelayTime)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Míra <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";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"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Hw-list [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Tomáš Hamouz<br><b>Sent:</b> Friday, June 15, 2018 4:26 PM<br><b>To:</b> HW-news<br><b>Subject:</b> Re: C: #define, XC8<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>inline funkce je taková která se nevolá CALLem, ale místo toho se rozvine místo toho volání. V praxi pak máte tutéž funkci implementovanou na mnoho místech.<br>Ve Vašem případě pokud byste volal příslušnou rozhodovací funkci s konstantním parametrem, optimalizátor pozná že podmínka je konstantní a nevyužitý kód vyhází pryč.<br><br>Tedy rozhodování zda se zavolá uint8_t či uint16_t verze se ponechá na optimalizátoru. Je možné že bude generovat warningy že se rozhodujete podle konstantího výrazu.<br><br>Tomáš<br><br><br><br><b><span style='color:maroon'>> Můžeme to trochu rozvést? <br>> Mám dvě funkce, které provádějí totéž, jedna ovšem s uint8_t a druhá s uint16_t.<br>> Čili<br>> void xx1(uint8_t);<br>> void xx2(uint16_t);<br>> Chtěl jsem, aby preprocesor si podle hodnoty při volání funkce sám rozhodl, kterou funkci použije.<br><br>> Jak jste to myslel s tím static inline?<br>> Musím se přiznat, že o tom inline jsem slyšel poprvé. Ale co jsem<br>> se o tom přečetl v pdf k XC8, tak podle mě to můj problém neřeší.<br>> Míra<br><br>> -----Original Message-----<br>> From: Hw-list [mailto:hw-list-bounces@list.hw.cz] On Behalf Of Jan Waclawek<br>> Sent: Thursday, June 14, 2018 9:14 PM<br>> To: HW-news<br>> Subject: Re: C: #define, XC8<br><br>> Nie:<br>> 1. ak to mate napisane tak, ako vidime, t.j. medzi jednotlivymi riadkami je<br>> prazdny riadok, tak tie spatne lomitka su neucinne - tie "zozeru" vzdy len<br>> jedno zariadkovanie<br>> 2. ak tam tie prazdne riadky nemate, tak v 2. faze prekladu (C99 5.1.1.2)<br>> sa vyhadzu spatne lomitka na konci riadkov a pripoja sa k nim riadky za<br>> nimi nasledujuce. Ale to znamena, ze vo faze 4, ked sa maju vykonavat tie<br>> preprocesorove direktivy, tak to #if uz nie je preprocesorova direktiva,<br>> lebo nie je na zaciatku riadku (6.10#2)<br><br>> Ale nerobte si vrasky, napiste pokojne funkciu s tymto istym obsahom,<br>> oznacte static inline, a kazdy slusny (a polovica tych neslusnych)<br>> prekladac urobi to co chcete. <br><br>> Ledazeby ste mali vypnutu optimalizaciu, co je blbost.<br><br>> wek<br><br><br>> ----- Original Message ---------------<br><br>> Subject: C: #define, XC8<br>>    From: "Miroslav Draxal" <</span></b></span><a href="mailto:evik@volny.cz"><span style='font-size:10.0pt;font-family:"Courier New"'>evik@volny.cz</span></a><b><span style='font-size:10.0pt;font-family:"Courier New";color:maroon'>><br>>    Date: Thu, 14 Jun 2018 19:51:24 +0200<br>>      To: "'HW-news'" <</span></b><a href="mailto:hw-list@list.hw.cz"><span style='font-size:10.0pt;font-family:"Courier New"'>hw-list@list.hw.cz</span></a><b><span style='font-size:10.0pt;font-family:"Courier New";color:maroon'>><br><br>> Dobrý den,<br><br>> Existuje nìjaká mo¾nost, rozchodit následující?<br><br>>  <br><br>> void delay_ms_uint16_t(uint16_t DelayTime);<br><br>> void delay_ms_uint8_t(uint8_t DelayTime);<br><br>>  <br><br>> #    define delay_ms(DelayTime) \<br><br>>         #if DelayTime < 256 \<br><br>>             delay_ms_uint8_t(DelayTime) \<br><br>>         #else \<br><br>>             delay_ms_uint16_t(DelayTime) \<br><br>>         #endif<br><br>>  <br><br>> Ztrozkotá to na  "illegal "#" directive" <br><br>> Díky za nápady.<br><br>> Míra<br><br><br>> _______________________________________________<br>> HW-list mailing list  -  sponsored by </span></b><a href="http://www.HW.cz"><span style='font-size:10.0pt;font-family:"Courier New"'>www.HW.cz</span></a><br><a href="mailto:hw-list@list.hw.cz"><span style='font-size:10.0pt;font-family:"Courier New"'>> Hw-list@list.hw.cz</span></a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list"><span style='font-size:10.0pt;font-family:"Courier New"'>> http://list.hw.cz/mailman/listinfo/hw-list</span></a><br><br><b><span style='font-size:10.0pt;font-family:"Courier New";color:maroon'>> _______________________________________________<br>> HW-list mailing list  -  sponsored by </span></b><a href="http://www.HW.cz"><span style='font-size:10.0pt;font-family:"Courier New"'>www.HW.cz</span></a><br><a href="mailto:hw-list@list.hw.cz"><span style='font-size:10.0pt;font-family:"Courier New"'>> Hw-list@list.hw.cz</span></a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list"><span style='font-size:10.0pt;font-family:"Courier New"'>> http://list.hw.cz/mailman/listinfo/hw-list</span></a><o:p></o:p></p></div></body></html>