<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[SDS PLC/PAC: Měření Energie & OnlineTechnology.cz - [vyřešeno] error in IF code: > invalid definition for true-IF-result]]></title>
	<link rel="self" href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=590&amp;type=atom" />
	<updated>2014-08-31T16:50:02Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.sds.an-d.cz/viewtopic.php?id=590</id>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] error in IF code: > invalid definition for true-IF-result]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=4588#p4588" />
			<content type="html"><![CDATA[<p>Takto funguje SDS-C překladač.</p><p>Je to z historického hlediska, kdy ještě předklad ze zdrojového textu probíhal na straně zařízení (dnes je v EXE na straně PC), což přineslo řadu omezení (tzn. SDS-C je velmi omezenou variantou FULL-C).</p><p>Jedno z těchto omezení je, že<br />IF umí pouze volat jedinou funkci (nebo použít goto) jako reakci na výsledek testu, tzn.<br /></p><div class="codebox"><pre><code>if (sys[140] == 1) funkceA() else funkceB();</code></pre></div><p>Opakuji, umí volat jedinou funkci (nebo použít goto), tzn. neumí provést např. ono zmíněné LVar přiřazení v původním textu.</p><p>Správný zápis má vypadat takto:<br /></p><div class="codebox"><pre><code>if (sys[140] == 1) { sys[232] = 1; }</code></pre></div><p>Preprocesor rozpozná závorky a upraví kód tak, že jej pak SDS-C překladač umí zpracovat.</p><p>Aktuální SDSC.exe by mělo i správně vypsat chybu, v případě porušení pravidel SDS-C pro IF.</p><p>Vše je popsáno na WiKi, doporučuji přečíst návody a prohlédnou vzorové příklady.</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2014-08-31T16:50:02Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=4588#p4588</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[[vyřešeno] error in IF code: > invalid definition for true-IF-result]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=4530#p4530" />
			<content type="html"><![CDATA[<p>Další divná chyba na kterou jsem narazil, kdo ten kompiler proboha psal?</p><div class="codebox"><pre><code>if(sys[140] == 1) sys[232] = 1;</code></pre></div><div class="quotebox"><blockquote><p>13: coding error : error in IF code: &gt; invalid definition for true-IF-result</p><p>*** Analyze done - Code is OK ***</p></blockquote></div><p>Přitom by to mělo fungovat, protože např. toto se zkompiluje bez problému:</p><div class="codebox"><pre><code>loop:
if(sys[64] != 0) goto loop;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[MightyPork]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11551</uri>
			</author>
			<updated>2014-07-30T07:48:34Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=4530#p4530</id>
		</entry>
</feed>
