<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 03.12.2017 20:42, Milan B. wrote:<br>
</div>
<blockquote type="cite"
cite="mid:105d7a7e-7923-f516-913f-2ae914a0ff65@bastl.sk">
<br>
Takto vznikne bezpecny kus kodu - ked sa makro pouzije kdekolvek,
tak by nemalo dojst k nespravnej interpretacii alebo naruseniu
struktury okoliteho kodu (napr. bodkociarka za volanim makra moze
robit galibu)
<br>
</blockquote>
<br>
Este prikladik. Ak sa nepouzije do ... while(0) ale iba blokove
zatvorky, nasledujuce volanie skonci chybou kompilatora -
bodkociarka bude ako prazdny prikaz a "oddeli" else od prislusneho
if<br>
<br>
if (...)<br>
MACRO;<br>
else<br>
return 0;<br>
<br>
Kod bez bodkociarky:<br>
if (...)<br>
MACRO<br>
else<br>
return 0;<br>
<br>
bude OK. Ak sa pouzije do ... while(0), oba pripady budu OK.<br>
<br>
Este jedno vyuzitie do...while(0) (mimo makier): ak mam dlhy kus
kodu z ktoreho treba v pripade chyby predcasne vyskocit a nemam rad
goto, mozem na skakanie na koniec pouzit break:<br>
do {<br>
<mnoho kodu><br>
if ( .... )<br>
break;<br>
<mnoho kodu><br>
if ( .... )<br>
break;<br>
<mnoho kodu><br>
if ( .... )<br>
break;<br>
<mnoho kodu><br>
} while(1)<br>
<br>
-m-<br>
<br>
<blockquote type="cite"
cite="mid:105d7a7e-7923-f516-913f-2ae914a0ff65@bastl.sk">
<br>
Mimochodom, GCC by malo poznat konstrukciu ({ .... }) , ale to
bude asi neprenositelne.
<br>
<br>
-m-
<br>
<br>
On 03.12.2017 20:25, Jaroslav Buchta wrote:
<br>
<blockquote type="cite">Casto se setkavam napr. s takovouto
konstrukci makra
<br>
<br>
#define __RETURN(GSM, val) do {
(GSM)->RetVal = (val); return (val); } while (0)
<br>
<br>
Proc se to uzavira do cyklu do...while s jednou iteraci a ne jen
do bloku?
<br>
<br>
<br>
_______________________________________________
<br>
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<br>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<br>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
<br>
</blockquote>
<br>
<br>
<br>
<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>
<p><br>
</p>
</body>
</html>