<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760511</guid>
        <pubDate>Tue, 13 Feb 2018 15:37:35 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760511</link>
        <description><![CDATA[Qraizer: Так этого добра и так навалом. В лучшем случае можно привести асм-листинги, но они будут непоказательны, т.к. практически всё в них implementation defined.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760507</guid>
        <pubDate>Tue, 13 Feb 2018 15:08:07 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760507</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760401'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-12T17:27:45+00:00">12.02.18, 17:27</time></span><div class='quote '>в принципе, можно, а зачем?</div></div><br>
Полезно, интересно, познавательно. Что ещё надо-то? :)<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760401'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-12T17:27:45+00:00">12.02.18, 17:27</time></span><div class='quote '>Да и какой код мне тут добавлять? Каким образом и какие тезисы он должен демонстрировать?</div></div><br>
Да обычный, для наглядности. __try-__except(выражение) и try-catch(тип-фильтр). Можно, конечно, и ссылочками на MSDN/cppreference, но проще и нагляднее, ИМХО, кодом. Что демонстрировать? Описанные сценарии, идёт RaiseException, разматывается до вот этого __except, срабатывает вот этот __finally, где //TODO: cleanup]]></description>
        <author>B.V.</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760401</guid>
        <pubDate>Mon, 12 Feb 2018 17:27:45 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760401</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760016'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T13:44:40+00:00">10.02.18, 13:44</time></span><div class='quote '><strong class='tag-b'>Qraizer</strong>, а оформи-ка ты это лучше в <a class='tag-url' href='http://forum.sources.ru/index.php?showforum=73' target='_blank'>C/C++ FAQ</a> :) Если добавишь немного кодом, будет совсем хорошо.</div></div>Покумекал я тут... в принципе, можно, а зачем? Это просто инфа для обдумывания и восторгания технологией, практической ценности не несущая. Технология придумана, кстати, ни разу не MS, а IBM для её OS/2 2.0, и в Win32 попавшую прицепом, когда та заказала первой OS/2 NT и снабдила своими консультантами по разработке нормальных ОСей вместо подсмотренных у Джоббса дурацких, и которая впоследствии была выкуплена у IBM, когда закончился контракт, и выпущена уже под собственным брендом Windows NT. Да и какой код мне тут добавлять? Каким образом и какие тезисы он должен демонстрировать?]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760390</guid>
        <pubDate>Mon, 12 Feb 2018 16:23:12 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760390</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760264'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T20:59:04+00:00">11.02.18, 20:59</time></span><div class='quote '>Как бы я мог воспользоваться шаблонной функцией в &quot;С&quot; - компиляторе ?</div></div><br>
Угу, ты невнимателен<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759260'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-02-05T23:05:27+00:00">05.02.18, 23:05</time></span><div class='quote '>#define ИЛИ template?, <strong class='tag-b'>C++</strong></div></div>]]></description>
        <author>B.V.</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760309</guid>
        <pubDate>Mon, 12 Feb 2018 11:16:56 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760309</link>
        <description><![CDATA[Flex Ferrum: Ух&#33; Ничоси холиварыч&#33; :D]]></description>
        <author>Flex Ferrum</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760264</guid>
        <pubDate>Sun, 11 Feb 2018 20:59:04 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760264</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760228'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T17:18:05+00:00">11.02.18, 17:18</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T11:09:48+00:00">11.02.18, 11:09</time></span><div class='quote '>&quot;Это что было, Холмс ?&quot; ©</div></div><br>
То, чего я опасался, не приводя примеры. Забудь про конкретно эти примеры. Думай о самом подходе.</div></div><br>
А тут думать вообще не о чем.<br>
Если это не прикол с тестом на внимательность, то сам вопрос глубоко порочен.<br>
---<br>
Два приведённых в вопросе варианта - два инструмента.<br>
И всё.<br>
Можно было бы спросить - что лучше, вскрыть грудную полость<br>
консервным ножом или открыть скальпелем консервы ?  :huh: <br>
---<br>
Как бы я мог воспользоваться шаблонной функцией в &quot;С&quot; - компиляторе ?<br>
Никак.<br>
&quot;С&quot; я вынужден использовать при программировании микроконтроллеров,<br>
поскольку С++ компилер сгенерит процентов на 10-15 больше объём<br>
исполнимых кодов, а мне приходится считать каждый байт. <br>
Общая величина проекта ничтожна.<br>
<br>
Для больших проектов (для Виндус) да ещё с участием многих разработчиков<br>
define не очень то удобен. <br>
Вопрос решается сам собой.<br>
Каждый инструмент к своему месту.<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-11T21:02:05+00:00">11.02.18, 21:02</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760199'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T12:28:57+00:00">11.02.18, 12:28</time></span><div class='quote '>Просто в случае несовместимых типов не пройдёт сравнение.</div></div><br>
И я об этом - и зачем тогда такая функция ?<br>
С возможной или ошибкой, или предупреждением, или некоторым неожиданным эффектом,<br>
или нормальным результатом ?  :o <br>
Давайте напишем функцию сравнения с одним шаблонным типом.<br>
Ничего не мешает сделать это.]]></description>
        <author>ЫукпШ</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760228</guid>
        <pubDate>Sun, 11 Feb 2018 17:18:05 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760228</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T11:09:48+00:00">11.02.18, 11:09</time></span><div class='quote '>&quot;Это что было, Холмс ?&quot; ©</div></div><br>
То, чего я опасался, не приводя примеры. Забудь про конкретно эти примеры. Думай о самом подходе.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760199'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>amk &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T12:28:57+00:00">11.02.18, 12:28</time></span><div class='quote '>В данном случае это не так уж страшно.</div></div><br>
Ту же. Не обсуждайте примеры. Это просто пояснение]]></description>
        <author>B.V.</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760226</guid>
        <pubDate>Sun, 11 Feb 2018 17:06:46 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760226</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760190'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T11:24:34+00:00">11.02.18, 11:24</time></span><div class='quote '>о есть мягко намекать на нелогичность суждений оппонента из-за того, что оппонент частенько забавно бомбит - нельзя?</div></div>Мягко — можно.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760199</guid>
        <pubDate>Sun, 11 Feb 2018 12:28:57 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760199</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T11:09:48+00:00">11.02.18, 11:09</time></span><div class='quote '>В данном случае сравниваются переменные 2-х разных типов,</div></div> В данном случае это не так уж страшно. Просто в случае несовместимых типов не пройдёт сравнение. Куда хуже, что тип первого параметра используется для возвращаемого значения.<br>
То есть templatemax(2.0, 1) вернёт вещественное 2.0, а templatemax(1, 2.0) вернёт целое 2, что скорее всего окажется несколько неожиданным для того, кто этот шаблон решится использовать.]]></description>
        <author>amk</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760190</guid>
        <pubDate>Sun, 11 Feb 2018 11:24:34 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760190</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760160'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T07:21:54+00:00">11.02.18, 07:21</time></span><div class='quote '>Ну а то что оно там не читаемое - это лично твое мнение. А на деле, обычно нормальные люди так и делают, чтоб не городить огород в одном месте, проще это разбить на подпрограммы.<br>
</div></div><br>
Ты уже разбил все свои функции из более чем трёх строк на функции поменьше?  :rolleyes: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760160'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T07:21:54+00:00">11.02.18, 07:21</time></span><div class='quote '>То есть ты реально головой об стену долбанулся?   По твоему в моем примере нет досрочного выхода из цикла? Ты иди почитай про оператор break в циклах, чудак, откроешь для себя новую возможность выхода из цикла   В твоем псевдокоде нет даже выхода из вложенного цикла. Там 3 голимых одиночных цикла, куда ты впихнул goto по своей наивной тупости. Пихать туда goto придет в голову разве что раку вроде тебя или какому нибудь первакурснегу.</div></div><br>
Я даже не знаю, что смешнее - то ли то, что ты где-то увидел, что я говорю, что у тебя нет выхода из цикла, то ли то, что ты каким-то боком приплёл тут множественные циклы, то ли то, что ты не понял, что под выходом тут понимается выход из функции с очисткой ресурсов  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760160'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T07:21:54+00:00">11.02.18, 07:21</time></span><div class='quote '>Ты привел говно голимое, а не псевдокод. От тебя ожидалось не скопипастить свою функцию сюда, а написать примерный псевдокод, который показывает почему там удобнее применить goto, а не что то другое.</div></div><br>
А я что написал по-твоему?  :lool: Примерный псевдокод есть, описание того, почему вынос в отдельные функции читаемость ухудшит есть, твоя неспособность написать это лучше без goto - тоже. Что ещё надо?  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760160'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T07:21:54+00:00">11.02.18, 07:21</time></span><div class='quote '>Твоя поза страуса, кричать что все что написано без goto - нечитабильно, просто поражает. </div></div><br>
Цитату в студию  :rolleyes: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760160'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T07:21:54+00:00">11.02.18, 07:21</time></span><div class='quote '> А вот ты, несмотря на свой пафос, не способен осилить примитивные алгоритмы, для того что бы написать что то без goto.</div></div><br>
Детский сад  :lool: Ты всерьёз считаешь, что сказанное &quot;сам дурак&quot; в споре может замаскировать печальный факт остуствия аргументов?  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760160'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T07:21:54+00:00">11.02.18, 07:21</time></span><div class='quote '>Чего же ты сказочник в С++ goto не юзаешь, когда работыешь например с сырыми указателями? </div></div><br>
Вау, а с этого момента поподробнее  :popcorn: От использования сырых указателей в языке внезапно пропадают деструкторы, из-за чего действия по их очистке становится обязательно делать руками что ли?  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760183'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T10:57:08+00:00">11.02.18, 10:57</time></span><div class='quote '>OpenGL, тебя это тоже касается. Ты же знаешь горячность KILLER-на, он уже которую страницу сдерживается.</div></div><br>
То есть мягко намекать на нелогичность суждений оппонента из-за того, что оппонент частенько забавно бомбит - нельзя? Ок, тогда из спора выхожу  :yes-sad:]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760186</guid>
        <pubDate>Sun, 11 Feb 2018 11:09:48 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760186</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759260'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-02-05T23:05:27+00:00">05.02.18, 23:05</time></span><div class='quote '><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template &#60;typename T1, typename T2&#62;</div><div class="code_line">T1 templatemax(T1 x, T2 y)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return (x &#60; y)?y:x;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script></div></div><br>
&quot;Это что было, Холмс ?&quot; &copy;<br>
Тест на внимательность ?  :lol: <br>
В данном случае сравниваются переменные 2-х разных типов,<br>
что, конечно, не замечательно.<br>
Лучше &quot;define&quot; без ошибок, чем template с ошибками.]]></description>
        <author>ЫукпШ</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760184</guid>
        <pubDate>Sun, 11 Feb 2018 11:01:33 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760184</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>KILLER</strong>, ты лучше скажи, как тебе переписанный на __leave, пример? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-11T11:02:35+00:00">11.02.18, 11:02</time></span></span><br>
Точнее даже переписанный на SEH. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-11T11:04:01+00:00">11.02.18, 11:04</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760181'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T10:46:57+00:00">11.02.18, 10:46</time></span><div class='quote '>А если то что ты посчитал является оскорблением, то пройдись по теме и отклони остальные посты, а не только мои.</div></div> Вообще да, надо бы в Холивары перенести.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760183</guid>
        <pubDate>Sun, 11 Feb 2018 10:57:08 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760183</link>
        <description><![CDATA[Qraizer: <div class="tag-mod"><div class="tag-mod__prefix">M</div><div class="tag-mod__body"><strong class='tag-b'>KILLER</strong>, никто тебя не троллит, не горячись. Но быть последовательным в своих постах не помешает. Ну или хотя бы чётче выражать задачи и пожелания. Я восстановил, так и быть, но давай без обидных эвфемизмов.</div></div><strong class='tag-b'>OpenGL</strong>, тебя это тоже касается. Ты же знаешь горячность <strong class='tag-b'>KILLER</strong>-на, он уже которую страницу сдерживается.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760181</guid>
        <pubDate>Sun, 11 Feb 2018 10:46:57 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760181</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760178'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-11T10:38:16+00:00">11.02.18, 10:38</time></span><div class='quote '>Напомню - отклоняю за оскорбления и мат. И за троллинг - только в тематике.</div></div><br>
Найди оскорбленя и мат в моем отклоненном посте? Там был дан обычный ответ на его сообщение. А если то что ты посчитал является оскорблением, то пройдись по теме и отклони остальные посты, а не только мои. Именно он с них и начал.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760178</guid>
        <pubDate>Sun, 11 Feb 2018 10:38:16 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760178</link>
        <description><![CDATA[KILLER: Господа, и что это <span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'><span class='tag-size' data-value='21' style='font-size:21pt;'>***</span></strong></span>? То есть одному можно троллить, второму нет?<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red"><span class='tag-size' data-value='21' style='font-size:21pt;'>***</span></span></strong><br>
<div class="tag-mod"><div class="tag-mod__prefix">M</div><div class="tag-mod__body">Напомню - отклоняю за оскорбления и мат. И за троллинг - только в тематике.</div></div>]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760149</guid>
        <pubDate>Sun, 11 Feb 2018 04:02:17 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760149</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760104'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T19:10:28+00:00">10.02.18, 19:10</time></span><div class='quote '>Ну вообще это уже описание некоторого решения, а не самой задачи. </div></div><br>
А это ничего не меняет - поскольку решение в данном случае ровно одно (по той же причине, по какой копирование файлов делается их открытием, циклом с чтением-записью и закрытием, и никак иначе), это не что-то нетривиальное вроде суффикского автомата, а просто некое дерево с разнородными данными, хранящееся как есть, и вышеописанного объяснения, почему тут структурный вариант не подходит, достаточно, то расписывать ТЗ смысла нет никакого.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760118'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T19:56:31+00:00">10.02.18, 19:56</time></span><div class='quote '> Так я тебе разбил три цикла на три функции, что тебя не устроило? Остальное могу словами объяснить. Аля сложные структуры данных вот там дальше гдето берут и очищаются.</div></div><br>
Я ровно там же написал, что меня не устроило - невоможность сделать твой вариант хоть сколько-нибудь читаемым. Иди разбей все свои функции, где больше двух операторов, на функции поменьше - примерно такой же смысл у предложенного тобой говнорешения :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760118'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T19:56:31+00:00">10.02.18, 19:56</time></span><div class='quote '><br>
Слушай, твой псевдокод представляет из себя три цикла в одной функции и один клинап. Это ты называешь условием?    Не смеши людей, еще раз тебе повторяю. Пусть тебе кто то другой переписывает с такими условиями. Я пасс.</div></div><br>
То есть представить, что три мелких цикла, из которых ты можешь в любой момент выйти - это, вообще говоря, нормальная ситуация, ты не в состоянии? Бедняжка :D <br>
И вообще, напомню, что изначально ты таки просил представить псевдокод:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759855'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:32:49+00:00">09.02.18, 11:32</time></span><div class='quote '>Ну приведи хоть псевдокодом. Чтоб понимать на примере.</div></div><br>
Ну я привёл, как ты и просил, и теперь ВНЕЗАПНО ты говоришь, что его недостаточно - подавай всю задачу  :lool: Да я на 146% уверен, что если я опишу требования к заполняемым данным и формат исходных данных, то ты начнёшь вопить - а почему так, а если я сменю формат данных - это будет не надо, ибо, несмотря на свой пафос, переписать без goto понятно ты это не способен, но сказать в ответ что-то надо :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760118'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T19:56:31+00:00">10.02.18, 19:56</time></span><div class='quote '>Странно что его коллега понял его код, как же он его понял без goto, ума не приложу. </div></div><br>
А зря не приложишь. Если бы приложил, то понял бы, что объяснение этому было дано раз эдак пять :D]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760118</guid>
        <pubDate>Sat, 10 Feb 2018 19:56:31 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760118</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760103'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T18:57:46+00:00">10.02.18, 18:57</time></span><div class='quote '>Вот это:</div></div><br>
Вот это по твоему условие задачи? Лол. Тебе на работе такие же условия ставят для разработки? :lol:  :lol:  :lol: <br>
Ты щас прикалываешься или что? Так я тебе разбил три цикла на три функции, что тебя не устроило? Остальное могу словами объяснить. Аля сложные структуры данных вот там дальше гдето берут и очищаются.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760103'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T18:57:46+00:00">10.02.18, 18:57</time></span><div class='quote '>и, возможно, псевдокод этого из следующего сообщения вполне себе этим условием является - всё, что не входит в это описание, для задачи &quot;показать, как это написать без goto с сохранением читаемости&quot; совершенно не нужно.</div></div><br>
Слушай, твой псевдокод представляет из себя три цикла в одной функции и один клинап. Это ты называешь условием?  :D  Не смеши людей, еще раз тебе повторяю. Пусть тебе кто то другой переписывает с такими условиями. Я пасс.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760103'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T18:57:46+00:00">10.02.18, 18:57</time></span><div class='quote '>Хм. Открываем первую страницу, вводим в поиске goto, и ВНЕЗАПНО видим, что первым его упомянул ты, причём трижды в одном сообщении. Круто ушёл он у тебя, аднака :crazy:</div></div><br>
В троллинге я могу упоминать все что угодно, это ведь не означает что когда я занимаюсь решением какой либо задачи, я обязательно думаю о goto? Вон у нас в политике сколько тем, значит ли это что все великие форумные политики и думают об этом всегда и всюду? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T19:57:59+00:00">10.02.18, 19:57</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760104'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T19:10:28+00:00">10.02.18, 19:10</time></span><div class='quote '>Ну вообще это уже описание некоторого решения, а не самой задачи. </div></div><br>
Вот именно. Только пациент думает что он дал условие задачи, когда ему его цикли переписали на три функции, он начал приводить что оказывается у него там какой то неделимый алгоритм, какие то мега сложные структуры данных и вообще он бедненький без goto запыхался все это писать. Странно что его коллега понял его код, как же он его понял без goto, ума не приложу. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T19:58:44+00:00">10.02.18, 19:58</time></span></span><br>
В любом случае, у меня появились вещи по важнее чем обсуждение каких то goto. Для себя лично я выводы сделал.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760104</guid>
        <pubDate>Sat, 10 Feb 2018 19:10:28 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760104</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760103'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T18:57:46+00:00">10.02.18, 18:57</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T17:59:21+00:00">10.02.18, 17:59</time></span><div class='quote '>Покажи где ты привел условие задачи? </div></div><br>
Вот это:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759853'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:18:13+00:00">09.02.18, 11:18</time></span><div class='quote '>три больших отдельных цикла, в них идёт построение сложных структур данных (используется несколько локальных переменных), везде нужны проверки, что всё хорошо, и если не всё - все построенные структуры надо удалить. </div></div><br>
и, возможно, псевдокод этого из следующего сообщения вполне себе этим условием является</div></div><br>
Ну вообще это уже описание некоторого решения, а не самой задачи.]]></description>
        <author>D_KEY</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760103</guid>
        <pubDate>Sat, 10 Feb 2018 18:57:46 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760103</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T17:59:21+00:00">10.02.18, 17:59</time></span><div class='quote '>Покажи где ты привел условие задачи? </div></div><br>
Вот это:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759853'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:18:13+00:00">09.02.18, 11:18</time></span><div class='quote '>три больших отдельных цикла, в них идёт построение сложных структур данных (используется несколько локальных переменных), везде нужны проверки, что всё хорошо, и если не всё - все построенные структуры надо удалить. </div></div><br>
и, возможно, псевдокод этого из следующего сообщения вполне себе этим условием является - всё, что не входит в это описание, для задачи &quot;показать, как это написать без goto с сохранением читаемости&quot; совершенно не нужно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3760089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T17:59:21+00:00">10.02.18, 17:59</time></span><div class='quote '>До этой темы - например он ушел на такой задний план, что при программировании, даже когда он мог бы облегчить жизнь - я бы о нем даже не вспомнил.</div></div><br>
Хм. Открываем первую страницу, вводим в поиске goto, и ВНЕЗАПНО видим, что первым его упомянул ты, причём трижды в одном сообщении. Круто ушёл он у тебя, аднака  :crazy:]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760089</guid>
        <pubDate>Sat, 10 Feb 2018 17:59:21 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760089</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T09:39:41+00:00">10.02.18, 09:39</time></span><div class='quote '>И? :rolleyes: Он действительно неделимый, а что в цикле заполняется сразу несколько данных, нужных далее - по сути уже не так уж и важно. А разбить ты можешь хоть код, хоть свою голову о стенку - реализацию понятней, чем в лоб с goto, ты не напишешь :D</div></div><br>
Что И? <br>
Ты уже реально похоже разбил свою голову об стенку, раз не понимаешь что тебе пишут. Я тебе пишу - я не знаю деталей задачи вообще. Я не знаю что там за алгоритм. Я не знаю по сути ни-хре-на. У меня есть приведенный тобою псевдокод. <br>
Я его разбил - ты начал писать что говно. И тут же начал писать уточнения какие то. Извини - но я не телепат, чтоб знать что у тебя там за алгоритм, какие у тебя там структуры данных, что там со всем этим происходит, и что вообще ты там делаешь. Соответственно за неимением информации - я, собственно как и любой другой человек, не в состоянии тебе что то обосновать. Именно это я тебе и написал. Но и это тебя не устроило.<br>
<br>
Ну иди бей свою голову об стену. Спор превратился в какой то голимый троллинг. По этому я из него выхожу. Интерес к дисскуссии пропал. Я лишь сделал вывод что на словах ты Лев Толстой, а на деле ниразу goto не юзал. Но если вот если БЫ, да каБЫ ты писал на Си, то обязательно бы юзал его на право и на лево. Ну и флаг тебе в руки. Юзай что хочешь. Мне по сути вообще плевать. <br>
Тем более что у мня появились немного другие задачи, из за которых я не собираюсь отвлекаться на этот троллинг. Тролльте дальше без меня. Можешь считать что я тупо слился и мне тебе нечего противопоставить. Ну что поделаешь, вот такой я нуб. Так и не понял весь смысл юзанья goto. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T18:07:32+00:00">10.02.18, 18:07</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T09:39:41+00:00">10.02.18, 09:39</time></span><div class='quote '>что я опять не понял условие задачи</div></div><br>
 :lol:  :lol:  :lol:  :lol: <br>
Покажи где ты привел условие задачи? Ты реально об стену долбанулся чтоли ? Или тот псеводокд твой - и есть условие задачи может быть? LooooL сцуко, до слез. Чтоб тебе такие условия задачи ставили. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T18:34:42+00:00">10.02.18, 18:34</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759942'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T23:54:37+00:00">09.02.18, 23:54</time></span><div class='quote '>Заюзал бы я сейчас в подобной ситуации goto? Когда код с ним написан за пять минут, не нуждается в отладке, прост, понятен и производителен? Обязательно. </div></div><br>
У меня немного другой склад ума значит. Не пропитанный блоксхемами. Поэтому мне бы в голову даже не пришло юзать там goto. Это уже в готовый код - врубиться и понять что там происходит и переписать без goto - сложно. А если нет готового кода, я бы даже не думал о goto. Вот такой у меня подход. <br>
Мозг человека так устроен, что если ты что то не используешь, то это просто уходит в далекие недра мозга. Именно по этому я бы писал по другому, без goto. Если бы я частенько юзал goto, или он бы везде мелькал напоминая о себе - возможно тогда, я бы и задумался его юзнуть. А когда он выпилен из жизни, то я как то не задумываюсь о нем вобще. До этой темы - например он ушел на такой задний план, что при программировании, даже когда он мог бы облегчить жизнь - я бы о нем даже не вспомнил.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760016</guid>
        <pubDate>Sat, 10 Feb 2018 13:44:40 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3760016</link>
        <description><![CDATA[B.V.: <strong class='tag-b'>Qraizer</strong>, а оформи-ка ты это лучше в <a class='tag-url' href='http://forum.sources.ru/index.php?showforum=73' target='_blank'>C/C++ FAQ</a> :) Если добавишь немного кодом, будет совсем хорошо.]]></description>
        <author>B.V.</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759994</guid>
        <pubDate>Sat, 10 Feb 2018 11:59:28 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759994</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>Qraizer</strong>, не очень понял, зачем ты это <strong class='tag-b'>тут</strong> написал :) Описано хорошо и интересно :good: <br>
Но вполне может потеряться в теме.]]></description>
        <author>D_KEY</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759982</guid>
        <pubDate>Sat, 10 Feb 2018 09:39:41 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759982</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759980'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T09:31:40+00:00">10.02.18, 09:31</time></span><div class='quote '>Я тебе его разбил, ты начал говорить - тут алгоритм неделимый, а тут мне возвращаются не указхатели, а тут еще какая то шняга.</div></div><br>
И?  :rolleyes: Он действительно неделимый, а что в цикле заполняется сразу несколько данных, нужных далее - по сути уже не так уж и важно. А разбить ты можешь хоть код, хоть свою голову о стенку - реализацию понятней, чем в лоб с goto, ты не напишешь  :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759980'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T09:31:40+00:00">10.02.18, 09:31</time></span><div class='quote '>И что мне каждый раз когда укажут на то, что я опять не понял условие задачи придумывать новый код?</div></div><br>
fixed  :D]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759980</guid>
        <pubDate>Sat, 10 Feb 2018 09:31:40 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759980</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759952'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-10T05:14:13+00:00">10.02.18, 05:14</time></span><div class='quote '>Нормально слился :lool: Какие тузы, о чём ты?</div></div><br>
Ты перечитай что ты пишешь. Ты привел пример. Я тебе его разбил, ты начал говорить - тут алгоритм неделимый, а тут мне возвращаются не указхатели, а тут еще какая то шняга. И что мне каждый раз на твои глупые ограничения придумывать новый код?]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759961</guid>
        <pubDate>Sat, 10 Feb 2018 07:20:42 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759961</link>
        <description><![CDATA[OpenGL: По-моему надо создать на форуме тему &quot;ссылки на интересные ликбезы от <strong class='tag-b'>Qraizer</strong>&quot; :)]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759960</guid>
        <pubDate>Sat, 10 Feb 2018 06:26:01 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759960</link>
        <description><![CDATA[Qraizer: Если функция такова, что требует специального подхода к снятию её со стека при откате, компилятор где-нибудь в секции данных создаёт для неё специальную структурку с указанием как минимум количества __try и записями для каждого из них, включающими тип следующего за ним обработчика, __except или __finally, и указатели на точки входа в выражения-фильтры и в сами блоки обработки. Сами эти компоненты он компилит как функции, чтобы око могло их вызывать и получать управление назад. В прологе этой функции компилятор создаёт на стеке ещё одну маленькую структурку, т.н. SEH-кадр, в которую пишет ссылку на эту вот структурку, специально для этой функции подготовленную, и на функцию локального ока, которая будет при откате этой функции заниматься разбором полётов и разгребать эти __try. Обычно это всегда одна и та же некая LocalUnwind(), которая входит в состав RTL, но если писать на асме, то мы вольны тут делать, что угодно, лишь бы в соответствии с правилами SDK. Конечно, симметрично в эпилоге этот SEH-кадр со стека изымается. Оверхед невелик, несколько инструкций в прологе и эпилоге, но в размере секции данных оверхед может быть и поболе, чем невелик, да.<br>
Это ещё не всё. В структурке есть спец.поле, которое помечает индекс текущего __try. Ну или не индекс, а поинтер. Не суть, лишь бы ему самому не запутаться было. При входе в __try компилятор помечает сие инкрементом индекса или как он там оформляет свои структурки, при выходе наоборот. Оверхед тоже весьма крохотный. Так что при исполнении LocalUnwind() всегда знает, где что в этой функции конкретно счас, что и докуда исполнилось, где искать записи об __except и __finally итп. И если ей сказали, мол, давай-ка поищи мне самый-самый __except(), а потом сказали а давай-ка следующий, а в следующий раз а дай-ка теперь __finally, а давай ещё, и ещё один, а она такая ой, всё, больше нету, то они с ОСью друг друга прекрасно поймут, при этом тонкости нагенеренных структурок самой ОСи до фени, это забота LocalUnwind(). Вообще говоря, эта самая LocalUnwind() задействуется компилятором и при всяких там break/return итп, т.к. это проще, чем генерить код, а сама LocalUnwind() вообще довольно-таки проста, т.к. итерироваться по записям и вызывать код по поинтерам несложно, а тут так вообще только __finally в известном диапазоне поискать да повызывать. Но за все компиляторы говорить не буду. Тем не менее, некий оверхед-таки есть, и чтобы максимально от него избавиться, следует устранить избыточные вызовы LocalUnwind(). Вот MS покумекала и спецом для этого ввела ещё __leave, который тупо прыгает на конец текущего __try, так что никакой размотки стека, даже локальной, становится не надо.<br>
Но и это ещё не всё. Одну конкретно взятую функцию LocalUnwind()-то обработает, но что делать с несколькими вызванными и незавершившимися функциями, особенно если половина из них лежит в DLL, писанных на Дельфи или в COM-объекте на VB? Вот тут-то на сцену выходит великая и могучая GlobalUnwind(). От неё зависит итерация по стеку в поиске следующего SEH-кадра и вызова LocalUnwind() для него, чтобы та нашла очередной __except и запросила его фильтр. Которой может оказаться совсем другая LocalUnwind(), Дельфёвая, например. А то и ОСовая. На самом деле ей не так уж и надо быть великой и могучей. Пока. Всего-то найти следующий кадр и джампнуться на его хендлер. Ну ещё мелочи типа передачи ему некой внутренней инфы, чтобы она потом на втором проходе по стеку обратно вернулась. А ещё она должна, если найдёт подходящий __except, зафиксировать найденную в коде точку отката, определить границы подсписка затрагиваемых структурок и вызвать на этот раз API-функцию RtlUnwind().<br>
И вот она уж если не великая и могучая, то по крайней мере так выглядит. Она выполняет собственно размотку стека и откат выполнения, последовательно вызывая GlobalUnwind() для всех SEH-кадров в указанных границах, которая вызывает LocalUnwind(), которая вызывает __finally... а в конце отката – указанный блок __except. Естественно при этом стек чистится от всех служебных вызовов, начиная с RaiseException(), ибо они снимаются с выполнения одними из первых. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T06:53:52+00:00">10.02.18, 06:53</time></span></span><br>
В результате на уровне ОС мы имеем единую архитектурную базу для обработки исключений, независящую ни от языка, ни от взаимодействия компонентов и модулей приложения. Это круто. К примеру, ты можешь вызвать DLL на Билдере, та вызовет EnumWindows(), указав коллбэком свою функцию, из неё вызовется Дельфёвый компонент, который вызовет EnumChildWindow(), а её коллбэк на вызове эдак 8-ом вдруг бац&#33; и бросит исключение. Которое не только нормально перехватится у тебя, отмотав всё в точку вплоть до вызова Билдера, но по дороге ещё и все подчистится, включая внутренние временные ресурсы самих ОСовых EnumWindows() и EnumChildWindow(), и временные объекты Дельфей и Билдера.<br>
К слову о птичках. Думаю, уже не надо объяснять, почему C++EH просто обязан быть основан на SEH. Потому что это единый механизм, и функционировать он должен как единое целое. Именно тот факт, что только недавно GNUсные компиляторы начали учитывать SEH, а до этого они знать о нём ничего не хотели и тупо юзали какой-нибудь longjmp() для catchей, приводил к тому, что и ресурсы текли, и стабильность страдала, ибо нормально не выполнялся откат ни ОСовых функций, ни DLLных, задействовавших SEH. Сейчас такая поддержка вроде есть, но только для внутренних целей библиотек поддержки C++EH. Расширений языка для поддержки SEH в своих программах ты так и не получишь. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T07:04:16+00:00">10.02.18, 07:04</time></span></span><br>
И в заключение. C++EH реализовать свои плюшки на ядре SEH уже несложно. Всего-то: транслируем каждый try во вложенные __try, каждому назначаем свой __except, в который транслируем соответствующий catch; в качестве выражений-фильтров указываем обобщённую RTL-функцию, анализирующую запись RTTI брошенного объекта. Каждый автоматический объект создаём под собственным __try, в __finally которого помещаем вызов его деструктора. Транслируем throw в RaiseException() с передачей кода исключения, зарезервированного для C++EH, и парой параметров: указатель на созданный объект исключения и на его RTTI-запись. Всё. Ну, почти. Всё-таки блоков как-то дохрена много получается, поэтому для экономии __tryёв там используются немного другие, более ёмкие структурки и как следствие немного более другие LocalUnwind() и GlobalUnwind(). Особенно последняя, которая тут гораздо более напоминает великую и могучую, т.к. ей, помимо того, что уметь кастовать производные классы в базовые, а также передавать объект исключения по значению, ежели вдруг, ещё надо объект исключения перемещать из одной области видимости в другую и озаботиться его разрушением по выходу из catch. И всё это только на основе динамической информации из RTTI-записей, ибо она скомпилена давным-давно и лежит себе готовая к употреблению в RTL языка, и какие там исключения нам вздумается бросать на этот раз, она заранее знать ну никак не может. А ещё и выражения-фильтры должны не тупо RTTI на равенство сравнивать, а учитывать нюансы иерархий классов и доступность базовых подобъектов, ибо завещал Отец-Основатель, что каст к непубличному базовому суть грех величайший. Собственно из-за этого C++EH и SEH-кадры отличаются, и при их совмещении в программе возникают сложности. Но они легко преодолимы.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759954</guid>
        <pubDate>Sat, 10 Feb 2018 05:18:01 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759954</link>
        <description><![CDATA[Qraizer: Тут внимательный читатель уже должен просто вопить &quot;чушь&#33; брехня&#33; фигня&#33; если я сделаю return или какой-нибудь break или не дай боже longjmp(), всё рууухнееет&#33;&quot; и будет неправ. Компилятор, поддерживающий SEH, должен корректно обходить сии грабли. Увидел return, значит должен навызывать затронутые им __finally, увидел – ужас – goto, никуда не денется, тоже должен. Итп. Благо эти штуки локальны в функциях, поэтому ему совсем не сложно всё оформить в лучшем виде. Но самый внимательный читатель на этом конечно не успокоится, и на этот раз уже будет прав: ежели в цепочку SEH внедрены модули на разных языках и даже вызовы API функций ОС, что тут может решить компилятор? Правильно, ничего. А он и не решает межфункциональные проблемы. Око – оно ведь не компилятором единым. Но вот что он однозначно может решить сам и решает – так это внутрифунциональные проблемы. Ну как сам решает... почти сам.<br>
Если без деталей, то общий принцип таков. <span class="tag-color tag-color-named" data-value="gray" style="color: gray">To be continued, пойду чайник поставлю</span>.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759952</guid>
        <pubDate>Sat, 10 Feb 2018 05:14:13 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759952</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759936'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:11:27+00:00">09.02.18, 21:11</time></span><div class='quote '>Мне сложно парировать не зная сути задачи. Извини, но все тузы в данном случае у тебя на руках, а я играю в слепую.</div></div><br>
Нормально слился :lool: Какие тузы, о чём ты? Что все эти циклы используют одни и те же переменные, я сказал сразу, так что это не изменение условий на лету. Что в этой ситуации локальный cleanup для каждого build не особо-то помогает, должно быть очевидно даже тебе, если бы ты умел хотя-бы минимально осмысливать написанное. Или туз - моё знание задачи? Ну задача - построить дерево датасетов со всеми требуемыми инвариантами по внешним данным, которые могут прийти кривыми - тебе стало от этого легче?  :D Очевидно же, что необходимость переходить к очистке из разных мест от копипаста ТЗ никуда не денется.]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759948</guid>
        <pubDate>Sat, 10 Feb 2018 05:05:16 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759948</link>
        <description><![CDATA[Qraizer: Вот тут-то на арену и выходят те самые __finally. Эти блоки тоже должны располагаться следом за __try. Но не вместе с __except, они с ними взаимоисключающи. У них нет параметров, и всё их назначение заключается в том, чтобы только лишь корректно откатить соответствующие им __try. Что там полезного делать? Ну, обычно это как раз очистка, т.б. освобождение занятых в этом __try ресурсов. Собственно больше там делать нечему. Причём __finally выполняются всегда, даже если __try просто завершается, самым что ни на есть штатным образом. На всякий случай есть AbnormalTermination(), что позволяет __finally выяснить, как именно __try закончился, нормально чи абнормально, но обычно __finally это до лампочки.<br>Естественно, при поиске подходящего __except эти __finally игнорятся, их время ещё не пришло, но вот теперь, выяснив, до какого __except ему нужно откатываться, око повторно проходит стек __tryёв вплоть до отобранного __except-ом, только теперь уже игнорит __exceptы, сосредоточившись на __finally и вызывая их. Внимание вопрос: а как же отрабатывают эти __finally, если око не было задействовано? Та не вопрос. Компилер же не дурак, что ему стоит самому в конце __try вызывать __finally, прикинувшись оком, а потом прыгнуть за его тело. Так что в отсутствие исключений оверхед минимальный.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759945</guid>
        <pubDate>Sat, 10 Feb 2018 04:00:14 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759945</link>
        <description><![CDATA[Qraizer: Ну поехали. Напомню, как выглядит C++EH.<br>
Есть некий блок try, код, исполняемый внутри которого, находится под пристальным наблюдением. Ежели чё, оператор throw может бросить исключение, которое немедленно этим самым пристальным взором обнаружится, и он начнёт поиск подходящего его обработчика. Таковым будет какой-нибудь блок catch, каковые должны располагаться сразу за соответствующими try, и их может быть и больше одного за каждым. Отличаются они своим как бы &quot;параметром&quot;: типом исключения, обрабатывать которое этот catch намерен.<br>
Т.к. try могут быть вложенными, то поиск подходящего catch может быть непростым занятием. Пристальное око сначала просматривает список catch самого внутреннего try. Если там ничего подходящего нет, то следующего try, непосредственно предшествующего только что просмотренному, итп. Ежели ничего найдено не будет, то ой, а если будет, то ура, этот catch и получит и управление, и брошенный throw объект исключения. Подходящесть определяется сугубо типом объекта. Ну, там есть оговорки касательно ссылочности, const/volatile и базовых классов брошенных объектов, ловимых по ссылкам или указателям, но это уже детали. Главное, что селектором catchей выступает именно тип исключения, а значение, удерживаемое объектом, C++EH до лампочки, оно может использоваться программером по своему усмотрению, нести какую-нибудь доп. инфу о возникшей ситуации, например.<br>
Когда catch выделен и одобрен, око откатывает всё, исполненное от входа в try, к которому одобренный catch присобачен. Ну как откатывает... просто снимает со стека все автоматические объекты посредством вызова их деструкторов и удаляет любые стековые кадры вызванных и не успевших завершиться функций. При этом, т.к. сам объект исключения тоже является автоматическим объектом, но его-то как раз надо сохранить, иначе что же тогда передавать в catch-то, оно аккуратненько выводит этот объект из его области видимости в вносит в область видимости catch. Обычно посредством конструктора копии, что создаёт новый объект, а созданный throw благополучно почивает вместе со своими собратьями. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T04:26:15+00:00">10.02.18, 04:26</time></span></span><br>
Теперь SEH. В-главных, в отличие от C++EH, который является языковым механизмом, SEH является механизмом операционной системы. Это делает SEH универсальным средством, позволяющим писать приложения на любых языках, писать отдельные их модули на разных языках, встраивать в охраняемые оком блоки сами функции ОС итп. Конечно, при условии, что используемые языковые средства поддерживают SEH, что до недавнего времени для GNUсных инструментов не выполнялось, поэтому писанные на них приложения страдали небольшими утечками и некоторой нестабильностью, исключить которые программеры в принципе-то могли, но сильно заморочившись, поэтому обычно забивали, чай не реакторами управляют.<br>
А в-остальных, SEH не так уж сильно архитектурно отличается от C++EH. С пристальным взором всё так же, только блок называется не try, а __try. А вот с обработчиками всё сложнее. Точнее, проще. Ну, для нас сложнее, а проще для ока. Исключения (если только они не аппаратные; впрочем, с аппаратными исключениями в C++EH всё ещё печальнее) бросаются API-функцией RaiseException(), которой передаётся тип исключения и его параметры. Причём тип исключения – это нифига не тип, это тупо целое значение. За __try может находиться только один обработчик под названием __except, и его параметром является тоже не тип, а значение. Точнее значение выражения. Ещё точнее – это даже не параметр, а выражение-фильтр, возвращаемое значение которого как раз и говорит оку, а чё собственно-то тому делать, а вызывает его именно око, а __except, чтобы решить, а что собственно возвращать, может заюзать GetExceptionCode() и GetExceptionInformation(), которые ему дадут и тип исключения, и параметры, и даже аппаратный контекст в точке броска исключения, что совсем полезно при аппаратных исключениях. Вот проанализировав всю эту фигню или какую-нибудь фиговую его часть, __except-выражение-фильтр и должно решить, что же ответить оку.<br>
Дело в том, что око само не знает, __except какого __try вызывать, и это должны решить сами __except. Вот оно и вызывает выражение каждого и смотрит, что ему ответят. Вызывает, естественно, в порядке от самого внутреннего. Если очередной __except вдруг вернёт EXCEPTION_CONTINUE_EXECUTION, это вполне удовлетворит око, и оно просто забудет об исключении, выполнив штатный возврат из RaiseException(). Если __except вернёт EXCEPTION_CONTINUE_SEARCH, то это является ответом оку, что этот __except не тот, который хочет иметь дело с этим исключением, и тому надо спросить следующего. А вот если ответом будет EXCEPTION_EXECUTE_HANDLER, то вот это вот как раз то, что око собственно-то и ждёт и с радостью примет этот __except в качестве целевого.<br>
Теперь ему остаётся лишь откатить всё взад. А вот как именно, это вопрос гораздо интереснее. SEH-то работает на уровне ОС и ничего не знает о языковых заморочках исполняемого приложения. Вдруг оно вообще на Форте писано, какие там нахрен деструкторы-то.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759944</guid>
        <pubDate>Sat, 10 Feb 2018 03:30:30 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759944</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759942'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T23:54:37+00:00">09.02.18, 23:54</time></span><div class='quote '>Сейчас, увы, Wolfenstein II ждёт, но попозже я накатаю кратенюсенький ликбез.</div></div>Начал тут обдумывать, что писать, и понял, что кратенюсенько не получится. Ладно, тогда пока просто перепишу первый пример на SEH.<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int copyFile(const char* src, const char* dst)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;void *buf = NULL;</div><div class="code_line">&nbsp;&nbsp;FILE *inF = NULL;</div><div class="code_line">&nbsp;&nbsp;FILE *ouF = NULL;</div><div class="code_line">&nbsp;&nbsp;size_t readed, written;</div><div class="code_line">&nbsp;&nbsp;int &nbsp; &nbsp;res = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;__try</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;buf = malloc(BUF_SIZE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;inF = fopen(src, &quot;rb&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;ouF = fopen(dst, &quot;wb&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (buf == NULL) __leave;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (inF == NULL) __leave;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (ouF == NULL) __leave;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;readed = fread(buf, 1, BUF_SIZE, inF);</div><div class="code_line">&nbsp;&nbsp; &nbsp;while (!feof(inF) || readed != 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;written = fwrite(buf, 1, readed, ouF);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (written != readed) __leave;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;readed = fread(buf, 1, BUF_SIZE, inF);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;res = 1;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;__finally</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (ouF != NULL) fclose(ouF);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (inF != NULL) fclose(inF);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (buf != NULL) free(buf);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;return res;</div><div class="code_line">}</div></ol></div></div></div></div>Думаю, тут и без ликбеза всё понятно. SEH штука классная. Её отсутствие в POSIX делает мне программинг в нём некомфортным.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759942</guid>
        <pubDate>Fri, 09 Feb 2018 23:54:37 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759942</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759941'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T22:09:56+00:00">09.02.18, 22:09</time></span><div class='quote '>__finally говно еще то, по крайней мере в С++. Я так понимаю - это уже из области SEH исключений? Я сталкивался с этим, и очень плотно сталкивался, и матюкался и плевался. Потому что когда ты попадаешь в этот блок - фрейм стека теряется напрочь, и ты ничего не можешь сделать, вернее можешь - но это все нужно делать вручную, чтоб сохранить фрейм стека. В Си - возможно это благо и чудо, я не буду спорить, потому как в Си я с этим не работал, но там нет и классов. А я с этой херней работал именно в С++ и с классами. Правда было это довольно давненько, лет 5 назад, а то и 8. Деталей я не помню сейчас. Но&#33; вся эта шняга типа __finally нужна для конкретных вещей. А goto - не нужен для конкретных вещей. И если вылетит Access Violation - __finally в принципе может как то помочь, а вот goto - нет. Потому что это два разных уровня взаимодействия с программой.</div></div>В таком случае, как обычно в таких случаях и советуется, причём далеко не только мной, советую изучить матчасть по SEH. Сейчас, увы, Wolfenstein II ждёт, но попозже я накатаю кратенюсенький ликбез. Пока и коротко – C++EH в MS-ных компилерах по WinAPI основан как раз на SEH, так что любая твоя программа с исключениями под капотом юзает SEH на полную катушку. И даже больше: SEH нередко задействуется и при return, и при continue и break, и при longjmp(), и – да ты и так догадался – при goto. Причём я сейчас не о C++. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-10T00:09:06+00:00">10.02.18, 00:09</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759941'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T22:09:56+00:00">09.02.18, 22:09</time></span><div class='quote '>Я могу тебе сказать ровно то же самое.</div></div>Ну вот я которую страницу и не понимаю, объчём сыръбор.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759941'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T22:09:56+00:00">09.02.18, 22:09</time></span><div class='quote '>Но ты ведь задумаешься - а можно ли избавится от этого и как? Или не будешь задумываться? Если ты не будешь задумываться - значит ты стороник goto.</div></div>Задумаюсь. Прикину стоимость редизайна, поставлю рядом величину его профита и ...тут может случиться по-разному. Скорее всего, если код написан на GWBasic в стиле соседа Пупкина, редизайн окупится, если же ты имеешь в виду код, подобный на который ты приводил ссылки, то запросто может и не окупиться.<br>
Я не сторонник или несторонник goto, я сторонник структурных решений и несторонник неструктурных. Современные языки предлагают полный спектр для реализации структурных решений, поэтому места для goto в программах практически не остаётся. Реалии однако таковы, что структурные решения не всегда бывают оправданными своей стоимостью реализации. Но, слава богу, весьма нечасто, и это хорошо. Для неструктурных решений многие языки предлагают только goto. Иногда ещё исключения подойдут. Глупо не пользоваться нужной фичей, когда она есть, и городить вместо это структурный костыль. Это не лучше, чем пытаться заменить множественное наследование агрегацией.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759941'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T22:09:56+00:00">09.02.18, 22:09</time></span><div class='quote '>Я по молодости так же не гнушался использовать макросы вместо констант, и goto, и писал еще похуже трешаки.</div></div>Та какая разница. По молодости я изначально не подумал, что понадобится сохранять/восстанавливать состояние? Так я и сейчас могу об этом не подумать. Заюзал бы я сейчас в подобной ситуации goto? Когда код с ним написан за пять минут, не нуждается в отладке, прост, понятен и производителен? Обязательно.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759941</guid>
        <pubDate>Fri, 09 Feb 2018 22:09:56 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759941</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '>это ровно тот же самый __finally с __leave, только сделан руками, потому что язык встроенных средств не имеет, а компилятор подходящих расширений языка.</div></div><br>
__finally говно еще то, по крайней мере в С++. Я так понимаю - это уже из области SEH исключений? Я сталкивался с этим, и очень плотно сталкивался, и матюкался и плевался. Потому что когда ты попадаешь в этот блок - фрейм стека теряется напрочь, и ты ничего не можешь сделать, вернее можешь - но это все нужно делать вручную, чтоб сохранить фрейм стека. В Си - возможно это благо и чудо, я не буду спорить, потому как в Си я с этим не работал, но там нет и классов. А я с этой херней работал именно в С++ и с классами. Правда было это довольно давненько, лет 5 назад, а то и 8. Деталей я не помню сейчас. Но&#33; вся эта шняга типа __finally нужна для конкретных вещей. А goto - не нужен для конкретных вещей. И если вылетит Access Violation - __finally в принципе может как то помочь, а вот goto - нет. Потому что это два разных уровня взаимодействия с программой.<br>
Я могу ошибаться конечно, может я что подзабыл или ты что то другое имел ввиду. Я не знаю. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '>Ну да. Я знаю средства, предоставляемые мне языком, понимаю их достоинства и недостатки, знаю &quot;правила хорошего тона&quot;, и не имею предрассудков в аккумуляции всего при принятии решений.</div></div><br>
Тогда довольно странно слышать от тебя что ты goto в прод не коммитил.  :scratch: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '>Если я увижу, что goto конкретно вот тут не проявляет своих отрицательных сторон, но в сравнении с другими средствами проявляет положительные, заюзаю и не поморщусь.</div></div><br>
Если бы у бабушки были яйца, то она была бы дедушкой. Мне видится что это из той же оперы. Я могу тебе сказать ровно то же самое. Вот зуб даю, если я увижу, что goto конкретно вот тут не проявляет своих отрицательных сторон, но в сравнении с другими средствами проявляет положительные, заюзаю и не поморщусь, но пока у меня таких ситуаций не было. А у тебя были? Я имею ввиду не на велосипедах? И да я читать умею. Знаю что не были. Ну так тогда о чем речь ? :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '> И это справедливо для любых других средств, той же рекурсии, например. Или не дай бог switch().</div></div><br>
Конечно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '>Ну и если некий код вызывает вопросы типа &quot;нахрена так&quot;, то это не означает автоматически, что он плохой. Возможно, были причины написать именно так, которых мы не знаем. Другое дело, чтобы из-за этого &quot;нахрена&quot; коду плохо не стало. Вот на это надо смотреть. Ну так и не стало же. Сколько ссылок ты не давал, столько раз я и приходил к выводу, что мол, да, странно, но вот так тоже нормально, плохих последствий не имеет.</div></div><br>
Конечно не означает. Но ты ведь задумаешься - а можно ли избавится от этого и как? Или не будешь задумываться? Если ты не будешь задумываться - значит ты стороник goto. А если задумаешься, значит - ты такой же противник как и я. Но судя по тому что в прод ты не припомнишь чтоб goto коммитил, я могу сделать вывод, что ты либо не сталкивался с таким, либо все таки задавался вопросом - &quot;нахрена так&quot;? &quot;А могу я по другому сделать?&quot; И судя по всему - всегда получал ответ - &quot;Да, я могу сделать по другому.&quot;. Ну разве не так получается?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '>Кстати вот, а почему у тебя switch() не вызывает отторжения?</div></div><br>
Незнаю :-?  Но скажу честно, я не припомню когда я использовал switch в последний раз. Хотя могу сказать наверняка - я точно его использовал несколько раз.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '>Ну, автором был я. Восстанавливал код по памяти, изначально это был такой же полусинтетический пример для другого ресурса, давно почившего лет за 10 до этого. А тот в свою очередь являлся выжимкой некой вполне практической задачи, писавшейся для однозадачной DOS. Код сохранения/восстановления внедрялся в уже готовую программу, когда выяснилось, что программа будет работать слишком долго, и не факт, что всё это время комп не понадобится для более срочных задач. Почитай, более 20-и лет назад, откуда я помню-то истоки.</div></div><br>
Ну если это было давно по молодости - то тогда это многое объясняет и все становится понятно, и я претензий никаких не имею. Я по молодости так же не гнушался использовать макросы вместо констант, и goto, и писал еще похуже трешаки. Я просто думал что этот код ты выдрал с прода, для демонстрации возможностей goto. Ну в принципе даже по той первой теме, из за этого кода срач вышел на десяток страниц помница. Не каждый так сможет написать.  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759939'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T21:40:01+00:00">09.02.18, 21:40</time></span><div class='quote '>Ну, это не ко мне. Бинарный ввод/вывод у потоков диктует char*, что тут сделаешь. </div></div><br>
Ну меня в основном запутало именно сохранение состояния. Я поначалу думал что оно играет какую то важную роль в алгоритме и является неотъемлемой частью цикла. Пока не вынес это в отдельную функцию.<br>
Еще очень смутили конструкции типа <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">ok = ok &amp;&amp; read/write file</div></ol></div></div></div></div><br>
Но по началу я не придал им значения, пока не присмотрелся пристально, а что же там происходит, и нафига именно вот так.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759939</guid>
        <pubDate>Fri, 09 Feb 2018 21:40:01 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759939</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759912'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T17:17:53+00:00">09.02.18, 17:17</time></span><div class='quote '>Ну извиняй, не так сформулировал, я имел ввиду &quot;А вы мне втираете - что это чуть ли не единственный <strong class='tag-b'>рассово верный</strong> способ решить задачу очистки ресурсов.&quot;</div></div>И ничего не поменялось. Простой, быстрый, понятный, но уж точно не единственный. <strong class='tag-b'>KILLER</strong>, просто присмотрись: это ровно тот же самый __finally с __leave, только сделан руками, потому что язык встроенных средств не имеет, а компилятор подходящих расширений языка.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759912'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T17:17:53+00:00">09.02.18, 17:17</time></span><div class='quote '>И ты писал, что в проде не припомнишь чтоб goto юзал. ... То ли ты goto пытаешься отмазать, то ли код майкрософта. При этом из всех споров про goto, я так понял что ты бы его юзнул, в исключительной ситуации. А не как правило.</div></div>Ну да. Я знаю средства, предоставляемые мне языком, понимаю их достоинства и недостатки, знаю &quot;правила хорошего тона&quot;, и не имею предрассудков в аккумуляции всего при принятии решений. Если я увижу, что goto конкретно вот тут не проявляет своих отрицательных сторон, но в сравнении с другими средствами проявляет положительные, заюзаю и не поморщусь. И это справедливо для любых других средств, той же рекурсии, например. Или не дай бог switch(). Ну и если некий код вызывает вопросы типа &quot;нахрена так&quot;, то это не означает автоматически, что он плохой. Возможно, были причины написать именно так, которых мы не знаем. Другое дело, чтобы из-за этого &quot;нахрена&quot; коду плохо не стало. Вот на это надо смотреть. Ну так и не стало же. Сколько ссылок ты не давал, столько раз я и приходил к выводу, что мол, да, странно, но вот так тоже нормально, плохих последствий не имеет.<br>
Кстати вот, а почему у тебя switch() не вызывает отторжения? Это же самая что ни на есть неструктурная конструкция, похлеще goto, я бы сказал: у того хоть метка одна, а тут куча, ветвление динамическое по результату выражения, а не статически в конкретную метку, да ещё и без контроля границ вариантов, как было бы при вложенных if()/else. И ещё кстати, на предмет вложенных if(): приемлемая глубина вложения как-то коррелирует с таковой для циклов?<br>
Вишь, сколько вопросов, на которые однозначных ответов нет и быть не может.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759912'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T17:17:53+00:00">09.02.18, 17:17</time></span><div class='quote '>Сколько у автора улетело времени на его написание? И почему он сделал именно вот так, а не по другому? Ведь там функция довольно сложная вышла, даже без goto, ее по хорошему нужно было смело бить на три. RestoreStateFromFile, SaveStateFromFile, ну и собственно алгоритм счетчиками. Почему он так не сделал?</div></div>Ну, автором был я. Восстанавливал код по памяти, изначально это был такой же полусинтетический пример для другого ресурса, давно почившего лет за 10 до этого. А тот в свою очередь являлся выжимкой некой вполне практической задачи, писавшейся для однозадачной DOS. Код сохранения/восстановления внедрялся в уже готовую программу, когда выяснилось, что программа будет работать слишком долго, и не факт, что всё это время комп не понадобится для более срочных задач. Почитай, более 20-и лет назад, откуда я помню-то истоки.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759912'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T17:17:53+00:00">09.02.18, 17:17</time></span><div class='quote '>Более того, там не goto ломает читабельность, а вырвиглазные reinterpret_cast&lt;char*&gt;(trololo)</div></div>Ну, это не ко мне. Бинарный ввод/вывод у потоков диктует char*, что тут сделаешь.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759936</guid>
        <pubDate>Fri, 09 Feb 2018 21:11:27 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759936</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759931'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T20:18:34+00:00">09.02.18, 20:18</time></span><div class='quote '>Можно на метках закладки сразу ставить (Ctrl+K/K), дабы опосля по ним F2 шлёпать. </div></div><br>
<strong class='tag-b'>Славян</strong>, про закладки я знаю, иногда даже активно использую, если код запутанный. И раньше писал, что мне видится разве что только закладками метки помечать, чтоб по ним прыгать. Но - это ведь их нужно для начала расставить. А это уже потеря времени, ради понимания происходящего. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T21:13:17+00:00">09.02.18, 21:13</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759930'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T20:09:25+00:00">09.02.18, 20:09</time></span><div class='quote '>Нет у функций никакого cleanup - всё, что было создано на предыдущих этапах (включая часть вспомогательных данных, нужных только для построения, т.е. результат работы первого цикла - не один, грубо говоря, массив, а несколько) нужно и на последующих, поэтому единственное место, где всё удаляется - главный cleanup.<br>
Или всё гораздо (нет, ГОРАЗДО) хуже, и ты предлагаешь удалять, например, результаты успешного build1 при неуспехе build2 - в cleanup секции в build2, а также в build3 в случае его неуспеха, куда мы придём в случае успеха build2, и ещё дополнительно - в главной секции cleanup, куда мы придём в случае успеха вообще всего? :crazy:</div></div><br>
Мне сложно парировать не зная сути задачи. Извини, но все тузы в данном случае у тебя на руках, а я играю в слепую. Я так не могу спорить.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759931</guid>
        <pubDate>Fri, 09 Feb 2018 20:18:34 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759931</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759917'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T19:10:21+00:00">09.02.18, 19:10</time></span><div class='quote '>А вот переход по меткам - было бы интересно услышать как настроить. Может когда пригодится.</div></div>Можно на метках закладки сразу ставить (Ctrl+K/K), дабы опосля по ним F2 шлёпать.]]></description>
        <author>Славян</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759930</guid>
        <pubDate>Fri, 09 Feb 2018 20:09:25 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759930</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759917'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T19:10:21+00:00">09.02.18, 19:10</time></span><div class='quote '>Я ж тебе по функциям расписал. внутри каждой функции есть свой клинап(под ним можешь подразумевать как раз обработку ошибки, произошедшую внутри конкретного конструктора структуры)</div></div><br>
Нет у функций никакого cleanup - всё, что было создано на предыдущих этапах (включая часть вспомогательных данных, нужных только для построения, т.е. результат работы первого цикла - не один, грубо говоря, массив, а несколько) нужно и на последующих, поэтому единственное место, где всё удаляется - главный cleanup.<br>
Или всё гораздо (нет, ГОРАЗДО) хуже, и ты предлагаешь удалять, например, результаты успешного build1 при неуспехе build2 - в cleanup секции в build2, а также в build3 в случае его неуспеха, куда мы придём в случае успеха build2, и ещё дополнительно - в главной секции cleanup, куда мы придём в случае успеха вообще всего?  :crazy: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759917'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T19:10:21+00:00">09.02.18, 19:10</time></span><div class='quote '>Ну то что ты привел псевдокодом - бьеться легко на функции.</div></div><br>
Разумеется, бъётся. Только толку-то?  :D]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759917</guid>
        <pubDate>Fri, 09 Feb 2018 19:10:21 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759917</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759915'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T18:58:19+00:00">09.02.18, 18:58</time></span><div class='quote '>Вот вернула build1 ошибку (да пусть даже упростим и предположим, что она только один указатель возвращает, хотя это не так), а значит требуемые для последующих этапов данные не готовы.</div></div><br>
То ты меня высмеиваешь за то, что я написал то же самое. То задаешь какие то глупые вопросы относительно моего кода. Я ж тебе по функциям расписал. внутри каждой функции есть свой клинап(под ним можешь подразумевать как раз обработку ошибки, произошедшую внутри конкретного конструктора структуры). Если что то не получилось - тебе функция вернет нулевой указатель. Ну а дальше я просто не стал писать if, который ты за меня написал в своем дополнении к своему коду.  :-? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759915'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T18:58:19+00:00">09.02.18, 18:58</time></span><div class='quote '>Потому что все эти построения делаются в рамках одного единого и неделимого алгоритма, смысл каждой части которого существует только в контексте остальных частей.</div></div><br>
А что значит неделимый алгоритм? Псевдокод ты написал как раз таки делимый.  :-? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759915'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T18:58:19+00:00">09.02.18, 18:58</time></span><div class='quote '>И смысл тогда разбивать алгоритм на функции с кучей параметров, если это только затруднит последующий анализ и займёт больше места, не дав взамен ничего, кроме отсутствия предмета твоей религиозной ненависти? :D</div></div><br>
Ну то что ты привел псевдокодом - бьеться легко на функции. Я же не виноват, что ты не можешь выразить суть задачи псевдокодом.  :-? <br>
Более того, то что ты привел - я не вижу там смысла писать goto даже на Си. Ну вот не вижу в упор. <br>
<br>
Понимаешь, goto можно влепить куда угодно. И обосновать это твоими словами. Так спорить сложно. Я ожидал, что ты приведешь нечто, что поставит меня в тупик, и вынудит с тобой согласится. А на деле выходит так, что ты приводишь то, что легко переписывается и без goto, но делаешь упор на то, что если бы ты писал на Си, то написал бы обязательно goto(как будто без него пиндец как больно было бы), и твой код все бы поняли. :-? <br>
<br>
Я уверен что можно что угодно переписать на goto - и это даже будет понятно. Но зачем писать с goto, если можно написать и без goto? Вот в чем вопрос.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759915'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T18:58:19+00:00">09.02.18, 18:58</time></span><div class='quote '>Зайди уже в настройки студии, а &lt;_&lt; Как минимум 2015 и выше - настройка цвета меток есть. </div></div><br>
Хз, я не нашел  :-?  Да и раньше я писал, что все не ограничивается одной только MSVS. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T20:04:16+00:00">09.02.18, 20:04</time></span></span><br>
По поводу настроек студии, ты можешь не заморачиваться. Я особо и не искал. Ну если есть такая возможность, покрасить отдельно метку в студии - ну есть так есть. Мне в принципе хватает того, что по умолчанию она не покрашена. Дело в том, что в настройки студии я не особо лазаю, так как не ограничен одной только студией. <br>
А вот переход по меткам - было бы интересно услышать как настроить. Может когда пригодится. Я нашел только go to definition, но оно работает в одну сторону, и предназначено не для скакания по меткам.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759915</guid>
        <pubDate>Fri, 09 Feb 2018 18:58:19 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759915</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759908'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:28:30+00:00">09.02.18, 15:28</time></span><div class='quote '>У тебя проверяется результат функции, а в моем случае будет проверка указателей. </div></div><br>
Киля, ты не разглагольствуй, а покажи кодом эти все проверки. Вот вернула build1 ошибку (да пусть даже упростим и предположим, что она только один указатель возвращает, хотя это не так), а значит требуемые для последующих этапов данные не готовы. Надо освободить то, что уже насоздавалось. Твои действия?  :rolleyes: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759908'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:28:30+00:00">09.02.18, 15:28</time></span><div class='quote '>Если ты подразумевал конкретно указатели - обоснуй в чем заключается говно при таком подходе, который предложил ты и продублировал по твоему я?</div></div><br>
Потому что все эти построения делаются в рамках одного единого и неделимого алгоритма, смысл каждой части которого существует только в контексте остальных частей. К тому же алгоритма не особо-то и большого (данная функция занимает всего-то чуть больше 100 строк) и не особо сложного, учитывая, что коллега вот буквально сегодня без моей подсказки быстро внёс в него необходимые изменения, и, я уверен, внёс бы, если бы писалось всё на си с goto. И смысл тогда разбивать алгоритм на функции с кучей параметров, если это только затруднит последующий анализ и займёт больше места, не дав взамен ничего, кроме отсутствия предмета твоей религиозной ненависти?  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759908'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:28:30+00:00">09.02.18, 15:28</time></span><div class='quote '>Цвет чего? У меня цвет поменяет только метка? Или остальные идентификаторы тоже? </div></div><br>
Зайди уже в настройки студии, а &lt;_&lt; Как минимум 2015 и выше - настройка цвета меток есть.]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759912</guid>
        <pubDate>Fri, 09 Feb 2018 17:17:53 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759912</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759909'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:53:46+00:00">09.02.18, 15:53</time></span><div class='quote '>Ну не бывает так, что б в коммерческой компании, не страдающей долей альтруизма, взяли и начали переписывать то, что работает и проверено временем, просто потому, что стандарт поменялся, парадигмы появились и так далее по списку.</div></div><br>
Я это очень прекрасно понимаю. И так уж и быть не буду с этим спорить. Пусть будет так. На рефакторинг нужны человекочасы, это определенные трудозатраты и так далее. Но&#33; Но ведь от этого код то лучше не станет? Ведь верно? Если что это риторический вопрос касательно тебя, потому как в следующем предложении ты на него ответил, и я с тобой соглашусь:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759909'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:53:46+00:00">09.02.18, 15:53</time></span><div class='quote '>С формальной точки зрения ты, конечно, прав.</div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T17:22:16+00:00">09.02.18, 17:22</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759909'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:53:46+00:00">09.02.18, 15:53</time></span><div class='quote '>Так зачем это трогать? Что в итоге выиграет корпорация? </div></div><br>
Да мне то, по большому счету вообще пофигу какой у них там код, пусть хоть все на goto перепишут. Я не работаю в майкрософт, и не занимаюсь рефакторингом или поддержкой их кода. Я юзаю их функции/классы/библиотеки, работает, да и ладно. Просто спор был конкретно об неком коне в вакууме. Лично я считаю что их код местами лютый говнокод. Это лично мое мнение. Есть у них и очень навороченный код, до которого я даже не дорос еще. Вот по сути и все.<br>
Просто меня начали убеждать, на сколько я понял - поменять свое мнение о их коде, который я считаю говнокодом. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T17:25:22+00:00">09.02.18, 17:25</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759899'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T14:11:30+00:00">09.02.18, 14:11</time></span><div class='quote '>И это притом, что в книге есть цитата наподобие &quot;впрочем, покажем примеры, где goto может быть в тему&quot;? :crazy:</div></div><br>
Во многих книгах, очень известных авторов так же можно найти описание применения какого нибудь говнокода, с оговоркой &quot;впрочем кое где этим можно кое что заткнуть&quot;. <br>
Например у того же Рихтера есть такие примеры. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T17:32:10+00:00">09.02.18, 17:32</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:13:00+00:00">09.02.18, 15:13</time></span><div class='quote '>Почему единственный-то? Наглядный, простой и быстрый. Другие &quot;вычеркните что-нибудь одно и приходите к нам&quot; ©. </div></div><br>
Ну извиняй, не так сформулировал, я имел ввиду &quot;А вы мне втираете - что это чуть ли не единственный <strong class='tag-b'>рассово верный</strong> способ решить задачу очистки ресурсов.&quot;<br>
Посмотри код что привел OpenGL, я не знаю задачу целиком, но его псевдокод - можно легко переписать без goto. И тем не менее, в начале дискуссии он в принципе соглашался с моей позицией. А сейчас кричит, что любой другой вариант - говно нечитабельное, а с goto - ну просто супер пупер код. Я сейчас конкретно не тебя обвиняю <strong class='tag-b'>Qraizer</strong>. Я сейчас просто показываю уровень аргументации.<br>
И ты писал, что в проде не припомнишь чтоб goto юзал. Думаю на Си ты писал побольше чем мы с OpenGL вместе взятые умножить на 10. И тем не менее - я не совсем пониманию твою позицию. То ли ты goto пытаешься отмазать, то ли код майкрософта. При этом из всех споров про goto, я так понял что ты бы его юзнул, в исключительной ситуации. А не как правило. Так я думаю это абсолюнто всех касается, и меня в том числе.<br>
Но приведенные примеры - не являются исключительными ситуациями имхо. Вот взять хотя бы твой код, который вчера я переписывал без goto. Сколько у автора улетело времени на его написание? И почему он сделал именно вот так, а не по другому? Ведь там функция довольно сложная вышла, даже без goto, ее по хорошему нужно было смело бить на три. RestoreStateFromFile, SaveStateFromFile, ну и собственно алгоритм счетчиками. Почему он так не сделал? Мне лично не понятно. Более того, там не goto ломает читабельность, а вырвиглазные reinterpret_cast&lt;char*&gt;(trololo) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T17:47:11+00:00">09.02.18, 17:47</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759897'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:48:37+00:00">09.02.18, 13:48</time></span><div class='quote '>А как же явный оверхед при замене функционала?<br>
Или ты что, реально решил померятmся таймерами штоле? </div></div><br>
Какой оверхед еще? 3 процессорные инструкции оверхед или что?]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759909</guid>
        <pubDate>Fri, 09 Feb 2018 15:53:46 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759909</link>
        <description><![CDATA[B.V.: KILLER, ты или бесконечно наивен, или так же бесконечно идеалист :) Ну не бывает так, что б в коммерческой компании, не страдающей долей альтруизма, взяли и начали переписывать то, что работает и проверено временем, просто потому, что стандарт поменялся, парадигмы появились и так далее по списку. С формальной точки зрения ты, конечно, прав. Ковырял как-то утёкший код Win2k, местами я ещё в свои первые годы писал лучше, чем то, что было там. Но то, что было там, оно работало. И, скорее всего, работает до сих пор где-то в оставшихся системных утилитах, вроде той же очистки диска. Так зачем это трогать? Что в итоге выиграет корпорация?]]></description>
        <author>B.V.</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759908</guid>
        <pubDate>Fri, 09 Feb 2018 15:28:30 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759908</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759899'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T14:11:30+00:00">09.02.18, 14:11</time></span><div class='quote '>А, то есть ты даже не видишь, что, вставив проверки в твой код, ты получишь ровно то, что написано у меня? :lool:</div></div><br>
У тебя проверяется результат функции, а в моем случае будет проверка указателей. Ну конечно, одно и то же. ты небось еще и в циклах пишешь нечто подобное?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">for(SomeIteratorObject ItObj = GetBegin(); ItObj != GetHeavyEnd(); ++ItObj)</div></ol></div></div></div></div><br>
?<br>
Если ты подразумевал конкретно указатели - обоснуй в чем заключается говно при таком подходе, который предложил ты и продублировал по твоему я? нонче не модно указатели проверять ноль? Или может быть модно пихать везде и всюду goto?<br>
Вот я не понимаю реально - ты кричишь, я не предлагаю использовать goto везде, но иногда его можно применить. При этом ты приводишь код, который может легко обойтись без всяких goto, и будет восприниматься легче, чем аналог с goto. Может для тебя на данном этапе спора goto читабельнее остальных конструкций? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T15:30:03+00:00">09.02.18, 15:30</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759899'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T14:11:30+00:00">09.02.18, 14:11</time></span><div class='quote '>Логично - по дефолту она того же цвета, что и остальной текст. Но ты в настройках волен поменять цвет хоть на серобуромалиновый :D</div></div><br>
Цвет чего? У меня цвет поменяет только метка? Или остальные идентификаторы тоже? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T15:30:58+00:00">09.02.18, 15:30</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:13:00+00:00">09.02.18, 15:13</time></span><div class='quote '>Знаешь ли, когда половина проекта в одной парадигме, другая в другой – это тоже говнокод.</div></div><br>
Ну как не крути у них и так говнокод и так говнокод, потому что у них есть примеры без goto. Значит они нарушают свою парадигму с goto. Выходит ведь так? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T15:32:41+00:00">09.02.18, 15:32</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T15:13:00+00:00">09.02.18, 15:13</time></span><div class='quote '>Он находит применение в неструктурных алгоритмах. Представь себе блоксхему с входом/выходом в/из середины. Не встречал? Ну что сказать, бывает... </div></div><br>
Вообще то я речь завел не о блоксхемах и не о микроконтроллерах каких нибудь. Речь шла про код майкрософта. goto говнокодом был что в 80-х, что сегодня. <br>
<br>
Но ваше право отмазывать майкрософт за их говнокод.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759906</guid>
        <pubDate>Fri, 09 Feb 2018 15:13:00 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759906</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '><strong class='tag-b'>Qraizer</strong>, то что ты описываешь никак не может объяснять нафига юзать goto в коде. По вашим словам получается что в последний раз они код писали в в 98 году что ли? Свежий код, старый, любой код майкрософта пестрит goto.</div></div><br>
Нет. Просто не меняют однажды вымученное из-за ограничений, но работающее. А что, надо сразу же броситься тут же отперерефактнить всё нахрен? Платишь?<br>
Знаешь ли, когда половина проекта в одной парадигме, другая в другой – это тоже говнокод. Так что ежели чё там новое добавляется, хотя, насколько мне известно, MS давно положила болт на развитие MFCей с ATLями, так уж пусть будет лучше в едином стиле. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T15:14:34+00:00">09.02.18, 15:14</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>напиши тогда - Да, в С++ вот тут говнецо. А если бы код был бы Сишный, тогда возможно и норм.</div></div>Ну я фактически именно это и сделал. Запостил код на C, и попозже два его аналога на C++. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T15:15:56+00:00">09.02.18, 15:15</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>А вы мне втираете - что это чуть ли не единственный способ решить задачу очистки ресурсов.</div></div>Почему единственный-то? Наглядный, простой и быстрый. Другие &quot;вычеркните что-нибудь одно и приходите к нам&quot; ©. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T15:17:53+00:00">09.02.18, 15:17</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>Больше ему нет нигде нормального применения.</div></div>Он находит применение в неструктурных алгоритмах. Представь себе блоксхему с входом/выходом в/из середины. Не встречал? Ну что сказать, бывает...]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759899</guid>
        <pubDate>Fri, 09 Feb 2018 14:11:30 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759899</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>Ну у тебя там вызов трех функций в if выражении получился, что действительно в твоем примере смахивает на говно. А у меня сначало все это присваивается указателем. По твоему ты не будешь if пихать на проверку не нулевого указателя или что? Так что либо получается необоснованное с твоей стороны &quot;говно&quot;, либо ты что то не договариваешь.</div></div><br>
А, то есть ты даже не видишь, что, вставив проверки в твой код, ты получишь ровно то, что написано у меня?  :lool: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>Метка не подсвечивается в синтаксисе языка. </div></div><br>
Логично - по дефолту она того же цвета, что и остальной текст. Но ты в настройках волен поменять цвет хоть на серобуромалиновый :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>Переход - разве что по F12, но он работает вообще практически на любой конструкции языка, это не для меток сделано</div></div><br>
И что?  :crazy: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>В этой ветке дискуссии вы приводите либо выдуманные функции, которые занимают 5 строчек кода, и где можно легко обойтись и без goto, либо ссылки на код функций по 150 строчек кода.</div></div><br>
Невнушабельно. Давай для пущей убедительности функции в 1 строку с одной стороны, и 424242 строки - с другой  :crazy: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '>Да где же это обычная практика, если даже K&amp;R в бородатых 80-х писали что нифига это не нормально даже для Си, ну кроме некоторых случаях.</div></div><br>
И это притом, что в книге есть цитата наподобие &quot;впрочем, покажем примеры, где goto может быть в тему&quot;?  :crazy:<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '> Я по прежнему остался при своем. goto используют люди из за ограниченности мышления, либо из за лени ну и в качестве костылей. </div></div><br>
Ну в этом, полагаю, никто тут не сомневается - что факты не способы поколебать твою упёртость истина достаточно очевидная  :D]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759897</guid>
        <pubDate>Fri, 09 Feb 2018 13:48:37 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759897</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759890'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:24:35+00:00">09.02.18, 13:24</time></span><div class='quote '> Больше ему нет нигде нормального применения. </div></div><br>
А как же явный оверхед при замене функционала?<br>
Или ты что, реально решил померятmся таймерами штоле?]]></description>
        <author>JoeUser</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759890</guid>
        <pubDate>Fri, 09 Feb 2018 13:24:35 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759890</link>
        <description><![CDATA[KILLER: <strong class='tag-b'>Qraizer</strong>, то что ты описываешь никак не может объяснять нафига юзать goto в коде. По вашим словам получается что в последний раз они код писали в в 98 году что ли? Свежий код, старый, любой код майкрософта пестрит goto. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T13:32:09+00:00">09.02.18, 13:32</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759889'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:22:36+00:00">09.02.18, 13:22</time></span><div class='quote '>Я ровно такой вариант написал чуть ниже, добавив необходимые проверки.</div></div><br>
Ну у тебя там вызов трех функций в if выражении получился, что действительно в твоем примере смахивает на говно. А у меня сначало все это присваивается указателем. По твоему ты не будешь if пихать на проверку не нулевого указателя или что? Так что либо получается необоснованное с твоей стороны &quot;говно&quot;, либо ты что то не договариваешь.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759889'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:22:36+00:00">09.02.18, 13:22</time></span><div class='quote '>А проверить это же так тяжелоооо, просто ужас :D</div></div><br>
Ну так я проверил. Метка не подсвечивается в синтаксисе языка. Переход - разве что по F12, но он работает вообще практически на любой конструкции языка, это не для меток сделано. Больше я ничего не нашел :-? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759889'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:22:36+00:00">09.02.18, 13:22</time></span><div class='quote '>Прыгать? :lool: Киля, в этой ветке дискуссии речь ведётся о функциях, влезающих в один экран, в которых прыгать никуда не надо априори, и которые с goto тоже бывают более читабельные. Ты специально только делаешь вид, что ведёшь себя глупо, или это результат настоящего и всамделишного полёта мысли? :crazy:</div></div><br>
В этой ветке дискуссии вы приводите либо выдуманные функции, которые занимают 5 строчек кода, и где можно легко обойтись и без goto, либо ссылки на код функций по 150 строчек кода.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759889'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:22:36+00:00">09.02.18, 13:22</time></span><div class='quote '>О, надо же. Ты прямым текстом признался, что не читатель. Уважуха&#33; 8-) Не каждый может признать за собой недостатки :yes:</div></div><br>
Где? Ну вот где я признался что я не читатель? Хорошо, если ты согласен что писать goto в С++ оцтой, почему ты тогда пытаешься оправдать код на С++ с использованием goto ? напиши тогда - Да, в С++ вот тут говнецо. А если бы код был бы Сишный, тогда возможно и норм. Тогда к тебе лично вопросы отпадут. Но вы сначало пишите что в С++ никто никогда в проде goto не использовал, мол де есть же RAII, а потом пишите - ну и что тут такого, обычная практика. Да где же это обычная практика, если даже K&amp;R в бородатых 80-х писали что нифига это не нормально даже для Си, ну кроме некоторых случаях. Не для С++, а для Си&#33;&#33;&#33;<br>
<br>
А вы мне втираете - что это чуть ли не единственный способ решить задачу очистки ресурсов. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T13:35:56+00:00">09.02.18, 13:35</time></span></span><br>
Короче ладно. Хватит переливать из пустого в порожнее. Я по прежнему остался при своем. goto используют люди из за ограниченности мышления, либо из за лени ну и в качестве костылей.  Больше ему нет нигде нормального применения. <br>
Если будете возражать, попробуйте придумать задачу, нормальную, не костыль вставить, а обычную такую задачу, где без него не обойтись. Тогда будем говорить. а так реально уже задолбало. выходит разговор глухого со слепым.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759889</guid>
        <pubDate>Fri, 09 Feb 2018 13:22:36 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759889</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759880'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:09:49+00:00">09.02.18, 13:09</time></span><div class='quote '>Почему нельзя написать например как то так:</div></div><br>
 :lool: <br>
Я ровно такой вариант написал чуть ниже, добавив необходимые проверки.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759880'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:09:49+00:00">09.02.18, 13:09</time></span><div class='quote '>Если ты с goto не работаешь, интересно с чего ты взял что это есть в студии? </div></div><br>
А проверить это же так тяжелоооо, просто ужас   :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759880'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:09:49+00:00">09.02.18, 13:09</time></span><div class='quote '>Дело в том, что с другими конструкциями языка либо не нужно куда то прыгать и смотреть, либо делать это не так сложно.</div></div><br>
Прыгать?  :lool:  Киля, в этой ветке дискуссии речь ведётся о функциях, влезающих в один экран, в которых прыгать никуда не надо априори, и которые с goto тоже бывают более читабельные. Ты специально только делаешь вид, что ведёшь себя глупо, или это результат настоящего и всамделишного полёта мысли?  :crazy: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759880'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:09:49+00:00">09.02.18, 13:09</time></span><div class='quote '>Так вас же много, а я один. Я вас всех рассматриваю как одного собеседника. Поэтому пока все не признают что С++ код у МС с метками - говнокод, буду считать что вы все мне втираете одно и то же.</div></div><br>
О, надо же. Ты прямым текстом признался, что не читатель. Уважуха&#33; 8-) Не каждый может признать за собой недостатки  :yes:]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759881</guid>
        <pubDate>Fri, 09 Feb 2018 13:10:14 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759881</link>
        <description><![CDATA[JoeUser: <div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759876'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T13:04:28+00:00">09.02.18, 13:04</time></span><div class='quote '>⇓</div></div>Оператор &quot;следования&quot; - божественнен :lool: </div></div>]]></description>
        <author>JoeUser</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759880</guid>
        <pubDate>Fri, 09 Feb 2018 13:09:49 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759880</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:37:17+00:00">09.02.18, 12:37</time></span><div class='quote '>На си это примерно так бы выглядело:</div></div><br>
Почему нельзя написать например как то так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">pointer1* Build1()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Построение первых структур данных</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(...)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(...) break</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;cleanup</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">pointer2* Build2()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Построение вторых структур данных</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(...)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(...) break</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;cleanup</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">pointer3* Build3()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Окончательное построение и проверка</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(...)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(...) break</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;cleanup</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void rebuild()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Инициализация новых структур данных в локальных переменных</div><div class="code_line">&nbsp;&nbsp; &nbsp;...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pointer1 = &nbsp;Build1();</div><div class="code_line">&nbsp;&nbsp; &nbsp;pointer2 = &nbsp;Build1();</div><div class="code_line">&nbsp;&nbsp; &nbsp;pointer3 = &nbsp;Build1();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Если мы здесь, то уже всё хорошо - просто обмениваем указатели на текущие структуры и построенные.</div><div class="code_line">&nbsp;&nbsp; &nbsp;...</div><div class="code_line">cleanup:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Удаление всех локальных структур</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:37:17+00:00">09.02.18, 12:37</time></span><div class='quote '>Если у тебя две метки в пределах одной функции, то у них разные имена, иначе программа просто не скомпилится :D Какая клавиша у тебя - понятия не имею, смотри там же в настройках. Что за вопросы-то тупые? :D</div></div><br>
Вопросы тупые от того, что при написании метки - мне Intellisense не показывает даже ее имя. Если ты с goto не работаешь, интересно с чего ты взял что это есть в студии? Максимум что я вижу, это подсветка метки, когда ставишь курсор на goto. Ну и goto definition работает в одну сторону.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:37:17+00:00">09.02.18, 12:37</time></span><div class='quote '>Ога, а то, что тут был не один такой пример - ты, как обычно, не заметил :D</div></div><br>
Дело в том, что с другими конструкциями языка либо не нужно куда то прыгать и смотреть, либо делать это не так сложно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:37:17+00:00">09.02.18, 12:37</time></span><div class='quote '>А что - для непонимания описанных тут примеров зелёным быть не надо что ли? :crazy:</div></div><br>
С goto можно быть хоть зеленым, хоть фиолетовым и всеравно выдать говнокод. С другими операторами языка это не так.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:37:17+00:00">09.02.18, 12:37</time></span><div class='quote '>Видимо, недостаточно ясно :lool:</div></div><br>
Так вас же много, а я один. Я вас всех рассматриваю как одного собеседника. Поэтому пока все не признают что С++ код у МС с метками - говнокод, буду считать что вы все мне втираете одно и то же.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759876</guid>
        <pubDate>Fri, 09 Feb 2018 13:04:28 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759876</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759860'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:10:07+00:00">09.02.18, 12:10</time></span><div class='quote '>Вас же из стороны в сторону носит. Приводишь микрософтовский код на плюсах с goto - нормально. Потом пишите что в С++ есть деструкторы. Потом опять что нормально. Я в этом не виноват. Я там раньше про RAII писал зачем? Не затем ли, что вы мне говорили что для очистки ресурсов сойдет и goto?</div></div><br>
<span class='tag-size' data-value='14' style='font-size:14pt;'>⇓</span><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759865'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:37:17+00:00">09.02.18, 12:37</time></span><div class='quote '>Видимо, недостаточно ясно </div></div> :yes: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759790'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T20:46:59+00:00">08.02.18, 20:46</time></span><div class='quote '>На предмет goto в библиотеках MS.<br>
Исключения полноценно стали поддерживаться только в VC4.2, который увидел свет в 1998-ом, незадолго до VC6. До этого компилятор их понимал очень ограничено, а до версии 4.0 (вроде бы) не понимал вообще. Библиотека MFC увидела свет в ...1992-ом, ещё на 16-битном Microsoft Quick C for Windows. Соответственно потому в MFC есть собственные exception-макросы. ATL разрабатывалась попозже, но не сильно. Первые версии вошли в, если не ошибаюсь, тот же VC4.2. Соответственно использование там C++EH было, наверное возможным, но были, видать, причины не раскачивать лодку. Тем более, что совмещение SEH с C++EH в пределах одной программы всё-таки и сегодня иногда вызывает определённые сложности.</div></div> :wall:]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759872</guid>
        <pubDate>Fri, 09 Feb 2018 13:01:17 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759872</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759828'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:08:49+00:00">09.02.18, 08:08</time></span><div class='quote '>На сколько я помню - continue - дорогая операция в цикле, и ее нужно избегать. </div></div><br>
Киля, извини, чисто ради интереса - приведи пруф на счет &quot;дороговизны&quot; оператора &quot;continue&quot;.<br>
Чуйка подсказывает подлог, обман и мошенничество  :lol:]]></description>
        <author>JoeUser</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759865</guid>
        <pubDate>Fri, 09 Feb 2018 12:37:17 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759865</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759855'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:32:49+00:00">09.02.18, 11:32</time></span><div class='quote '>Ну приведи хоть псевдокодом. </div></div><br>
На си это примерно так бы выглядело:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void rebuild()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Инициализация новых структур данных в локальных переменных</div><div class="code_line">&nbsp;&nbsp; &nbsp;...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Построение первых структур данных</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(...)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(...) goto cleanup;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Построение вторых структур данных</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(...)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(...) goto cleanup;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Окончательное построение и проверка</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(...)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if(...) goto cleanup;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Если мы здесь, то уже всё хорошо - просто обмениваем указатели на текущие структуры и построенные.</div><div class="code_line">&nbsp;&nbsp; &nbsp;...</div><div class="code_line">cleanup:</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Удаление всех локальных структур</div><div class="code_line">}</div></ol></div></div></div></div><br>
Даже если ты заморочишься и вынесешь каждый этап построения в отдельную функцию, у тебя получится говно вроде такого:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if(build1(100500_local_variables_passed_by_pointers) &amp;&amp; </div><div class="code_line">&nbsp;&nbsp; build2(100500_local_variables_passed_by_pointers) &amp;&amp;</div><div class="code_line">&nbsp;&nbsp; build3(100500_local_variables_passed_by_pointers))</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; swap_pointers;</div><div class="code_line">}</div><div class="code_line">cleanup</div></ol></div></div></div></div><br>
либо, как вариант - делать кучу вложенных if-ов. Оба эти решения проиграют по всем параметрам решению в лоб с goto.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759855'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:32:49+00:00">09.02.18, 11:32</time></span><div class='quote '>В настройках лазить? А если у меня две метки? Куда меня go to definition отправит? И как вызвать этот go to definition, например в MSVS?</div></div><br>
Если у тебя две метки в пределах одной функции, то у них разные имена, иначе программа просто не скомпилится :D Какая клавиша у тебя - понятия не имею, смотри там же в настройках. Что за вопросы-то тупые? :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759855'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:32:49+00:00">09.02.18, 11:32</time></span><div class='quote '>Если у меня блок помещается в экран - то там темболее не нужны goto, их обычно и юзают там, где не помещается в экран, чтоб еще подлить говнеца в итак портянку кода.   </div></div><br>
Ога, а то, что тут был не один такой пример - ты, как обычно, не заметил  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759855'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:32:49+00:00">09.02.18, 11:32</time></span><div class='quote '>Дело в том, что с if&#39;ами ты можешь такое сделать или специально или если зеленый. А с goto практически всегда выходит непонятно.</div></div><br>
А что - для непонимания описанных тут примеров зелёным быть не надо что ли?  :crazy: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759855'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:32:49+00:00">09.02.18, 11:32</time></span><div class='quote '>Я приводил исходники от MS, где goto абсолютно не к месту, более того там для отчистки ресурсов в языке есть встроенные средства - аля те же деструкторы, а вы мне говорили что это какой то мега шаблон и супер пупер клевый код, но никак не говно. Именно по этому мы и спорим 8-ую страницу.</div></div><br>
Видимо, недостаточно ясно :lool: <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759636'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T06:44:32+00:00">08.02.18, 06:44</time></span><div class='quote '>Да, я от тебя на данный конкретный вопрос ответ получил, он меня впоне устроил и новых вопросов по этому поводу у меня нет. Можно считать вопрос о говнокоде в MS SDK закрытым, или я всё ещё недостаточно ясно выразился, что я с этим не спорю от слова совсем?   </div></div>]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759860</guid>
        <pubDate>Fri, 09 Feb 2018 12:10:07 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759860</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759858'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T12:04:05+00:00">09.02.18, 12:04</time></span><div class='quote '>KILLER, ну не ври, что читаешь, а. </div></div><br>
Читаю.  :-?  Вас же из стороны в сторону носит. Приводишь микрософтовский код на плюсах с goto - нормально. Потом пишите что в С++ есть деструкторы. Потом опять что нормально. Я в этом не виноват. Я там раньше про RAII писал зачем? Не затем ли, что вы мне говорили что для очистки ресурсов сойдет и goto?]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759858</guid>
        <pubDate>Fri, 09 Feb 2018 12:04:05 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759858</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>KILLER</strong>, ну не ври, что читаешь, а.]]></description>
        <author>Qraizer</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759855</guid>
        <pubDate>Fri, 09 Feb 2018 11:32:49 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759855</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759853'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:18:13+00:00">09.02.18, 11:18</time></span><div class='quote '>Не всегда возможно. Вот прямо сейчас у меня есть такая функция - три больших отдельных цикла, в них идёт построение сложных структур данных (используется несколько локальных переменных), везде нужны проверки, что всё хорошо, и если не всё - все построенные структуры надо удалить. В си в этой функции у меня бы было goto, выполняющее освобождение всех временных ресурсов - без него написать бы удобно всё это дело тупо не получилось.<br>
</div></div><br>
Ну приведи хоть псевдокодом. Чтоб понимать на примере. Иногда используют goto от того, что мало знают инструмент. Т.е. допустим ты бы юзнул goto, а ктото другой возможно другой механизм бы. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759853'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:18:13+00:00">09.02.18, 11:18</time></span><div class='quote '>Как минимум - настройки цвета и переход к метке по аналогии с go to definition для методов.</div></div><br>
В настройках лазить? А если у меня две метки? Куда меня go to definition отправит? И как вызвать этот go to definition, например в MSVS?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759853'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:18:13+00:00">09.02.18, 11:18</time></span><div class='quote '>Ага - блок у тебя обязательно помещается в экран, а вот метка по-любому находится так далеко, что ты её не найдёшь :lool: Двойные стандарты такие двойные.</div></div><br>
Если у меня блок помещается в экран - то там темболее не нужны goto, их обычно и юзают там, где не помещается в экран, чтоб еще подлить говнеца в итак портянку кода.  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759853'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:18:13+00:00">09.02.18, 11:18</time></span><div class='quote '>И? :rolleyes: Я могу if-ами добиться того же - теперь if-ы зло, или всё-таки это я такой негодяй, написавший такую неудобную программу? :D<br>
</div></div><br>
Дело в том, что с if&#39;ами ты можешь такое сделать или специально или если зеленый. А с goto практически всегда выходит непонятно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759853'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T11:18:13+00:00">09.02.18, 11:18</time></span><div class='quote '>То есть по-твоему &quot;goto иногда может быть к месту&quot; означает &quot;все должны использовать goto правильно&quot;? :crazy:</div></div><br>
Я приводил исходники от MS, где goto абсолютно не к месту, более того там для отчистки ресурсов в языке есть встроенные средства - аля те же деструкторы, а вы мне говорили что это какой то мега шаблон и супер пупер клевый код, но никак не говно. Именно по этому мы и спорим 8-ую страницу.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759853</guid>
        <pubDate>Fri, 09 Feb 2018 11:18:13 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759853</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:36:12+00:00">09.02.18, 08:36</time></span><div class='quote '>етз, значит моя функция примет радикально иной вид, возможно она превратится в десяток других функций, возможно она превратится в класс, возможно что угодно. Я не могу тебе точно сказать что с ней будет, потому что мы сейчас гадаем.</div></div><br>
Не всегда возможно. Вот прямо сейчас у меня есть такая функция - три больших отдельных цикла, в них идёт построение сложных структур данных (используется несколько локальных переменных), везде нужны проверки, что всё хорошо, и если не всё - все построенные структуры надо удалить. В си в этой функции у меня бы было goto, выполняющее освобождение всех временных ресурсов - без него написать бы удобно всё это дело тупо не получилось.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:36:12+00:00">09.02.18, 08:36</time></span><div class='quote '>А что для меток есть? Я их не юзаю, по этому не вкурсе что для них есть в IDE?</div></div><br>
Как минимум - настройки цвета и переход к метке по аналогии с go to definition для методов.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:36:12+00:00">09.02.18, 08:36</time></span><div class='quote '>Плюс ко всему - возьми примитивную IDE, notepad++ или mcedit, far-edit, там вообще нет перемещения даже по блокам. Но тем не менее когда ставишь курсор на открывающийся блок - закрывающийся тут же подсвечивается.</div></div><br>
Ага - блок у тебя обязательно помещается в экран, а вот метка по-любому находится так далеко, что ты её не найдёшь  :lool: Двойные стандарты такие двойные.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:36:12+00:00">09.02.18, 08:36</time></span><div class='quote '>Можно. Я же объяснял почему плохо с goto. Потому что куда ты перейдешь - не всегда очевидно в случае с goto. В ряде случаев ты даже под отладчиком можешь запутаться с метками.</div></div><br>
И?  :rolleyes:  Я могу if-ами добиться того же - теперь if-ы зло, или всё-таки это я такой негодяй, написавший такую неудобную программу? :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:36:12+00:00">09.02.18, 08:36</time></span><div class='quote '>Ну вы ведь. </div></div><br>
То есть по-твоему &quot;goto иногда может быть к месту&quot; означает &quot;все должны использовать goto правильно&quot;? :crazy:]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759838</guid>
        <pubDate>Fri, 09 Feb 2018 09:03:02 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759838</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759835'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:51:15+00:00">09.02.18, 08:51</time></span><div class='quote '>Ассемблерные демоны уже взяли тебя на карандаш, готовься к пожизненной скороварке&#33; :blink:</div></div><br>
мы сейчас говорим не об ассемблере. Там очень ограниченные средства разработки, нежели в ЯВУ, и там goto скорее правило, чем исключение из правил.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759836</guid>
        <pubDate>Fri, 09 Feb 2018 08:53:49 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759836</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759815'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:41:16+00:00">09.02.18, 06:41</time></span><div class='quote '>Городить некий итератор, нужный только в одном месте и который менее читаемый, чем вариант втупую - глупость уровня Кили.</div></div><br>
Ну если так, то согласен.<br>
Но я бы не хотел видеть тот говнокод с goto в проде. В крайнем случае вариант Кили.<br>
А если это не &quot;одноразовый&quot; код, то я бы таки подумал :)]]></description>
        <author>D_KEY</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759835</guid>
        <pubDate>Fri, 09 Feb 2018 08:51:15 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759835</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:36:12+00:00">09.02.18, 08:36</time></span><div class='quote '>В ряде случаев ты даже под отладчиком можешь запутаться с метками.</div></div><br>
Ассемблерные демоны уже взяли тебя на карандаш, готовься к пожизненной скороварке&#33;  :blink:]]></description>
        <author>JoeUser</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759832</guid>
        <pubDate>Fri, 09 Feb 2018 08:36:12 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759832</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:30:33+00:00">09.02.18, 08:30</time></span><div class='quote '>Это если у тебя один цикл. А если несколько мест, откуда ты выйти можешь? Десяток флагов для каждого из них вводить? :D</div></div><br>
Нетз, значит моя функция примет радикально иной вид, возможно она превратится в десяток других функций, возможно она превратится в класс, возможно что угодно. Я не могу тебе точно сказать что с ней будет, потому что мы сейчас гадаем.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:30:33+00:00">09.02.18, 08:30</time></span><div class='quote '>То есть для блоков ты не гнушаешься использовать воможности IDE, а для меток - ни-ни, только примитивный текстовый поиск? :D<br>
</div></div><br>
А что для меток есть? Я их не юзаю, по этому не вкурсе что для них есть в IDE?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:30:33+00:00">09.02.18, 08:30</time></span><div class='quote '>Как минимум студия умеет и подсвечивать, и переходить к ним. Причём переход ровно такой же, как переход к функции - делается в отдельном окне. Что тебя не устраивает?</div></div><br>
У меня студия почему то метки не подсвечивает. Стоят стандартные настройки. И как по ним перемещаться? Плюс ко всему - возьми примитивную IDE, notepad++ или mcedit, far-edit, там вообще нет перемещения даже по блокам. Но тем не менее когда ставишь курсор на открывающийся блок - закрывающийся тут же подсвечивается.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:30:33+00:00">09.02.18, 08:30</time></span><div class='quote '>А что - сложный цикл на других конструкциях нельзя сделать по-твоему? :crazy: А если можно, то почему тогда плохо именно goto?</div></div><br>
Можно. Я же объяснял почему плохо с goto. Потому что куда ты перейдешь - не всегда очевидно в случае с goto. В ряде случаев ты даже под отладчиком можешь запутаться с метками.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:30:33+00:00">09.02.18, 08:30</time></span><div class='quote '>А кто тут на это полагается? :D</div></div><br>
Ну вы ведь. :-?]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759830</guid>
        <pubDate>Fri, 09 Feb 2018 08:30:33 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759830</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759828'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:08:49+00:00">09.02.18, 08:08</time></span><div class='quote '>Хорошо, если там будет мега лютая логика - я заведу флаг выхода из цикла и вставлю проверку - если мы не выпрыгнули из вложенного цикла, значит будет выполнятся код за циклом, иначе клинап и выход. </div></div><br>
Это если у тебя один цикл. А если несколько мест, откуда ты выйти можешь? Десяток флагов для каждого из них вводить? :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759828'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:08:49+00:00">09.02.18, 08:08</time></span><div class='quote '>В случае с циклами - там есть блоки&#33; Сейчас любая среда разработки позволяет без потери контеста прыгать по блокам, нажатием 1-2 кнопок, а с меткой не так. Тебе ее во первых нужно сначало найти глазами, если функция большая и запутанная - ты будешь ее искать поиском, если файл на 5 тысяч строк, и метка одна на функцию, но есть такая же в других функциях - ты по поиск тупо вылетишь за контекст функции. </div></div><br>
То есть для блоков ты не гнушаешься использовать воможности IDE, а для меток - ни-ни, только примитивный текстовый поиск? :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759828'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:08:49+00:00">09.02.18, 08:08</time></span><div class='quote '>А IDE даже не подсвечивают метку, я уж не говорю о том, чтоб по ним можно было перемещаться. </div></div><br>
Как минимум студия умеет и подсвечивать, и переходить к ним. Причём переход ровно такой же, как переход к функции - делается в отдельном окне. Что тебя не устраивает?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759828'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:08:49+00:00">09.02.18, 08:08</time></span><div class='quote '>речь не о return&#39;ах каких нибудь, потому что return&#39;ом ты вылетишь в другую функцию, а с помощью меток ты можешь сделать сложный цикл. </div></div><br>
А что - сложный цикл на других конструкциях нельзя сделать по-твоему?  :crazy: А если можно, то почему тогда плохо именно goto?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759828'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T08:08:49+00:00">09.02.18, 08:08</time></span><div class='quote '>а полагаться на то, что все будут использовать goto только так чтоб все было понятно - глупо.</div></div><br>
А кто тут на это полагается?  :D]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759828</guid>
        <pubDate>Fri, 09 Feb 2018 08:08:49 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759828</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T07:15:55+00:00">09.02.18, 07:15</time></span><div class='quote '>Он придрался ровно к тому же, что и я, просто у кого-то с пониманием контекста проблемы :D<br>
</div></div><br>
Хорошо, если там будет мега лютая логика - я заведу флаг выхода из цикла и вставлю проверку - если мы не выпрыгнули из вложенного цикла, значит будет выполнятся код за циклом, иначе клинап и выход. <br>
Ты можешь сказать - что там может быть мешанина из кода и будет все запутано. На что я отвечу, если будет такая мешанина, значит я код за циклом и до очистки - вынесу в отдельную функцию, тогда будет все понятно. Так сложно гадать на велосипедах что там будет. Но то, до чего ты прицепился - абсолютно не существенная проблема.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T07:15:55+00:00">09.02.18, 07:15</time></span><div class='quote '>Зачем её искать? Инструкция goto ok - очевидно, означает переход к варианту, когда ок. Тебе не очевидно? Могу только посочувствовать твоей альтернативной понятливости :D</div></div><br>
В самом переходе - нет ничего плохо, я имею ввиду в конструкции goto label, проблема не в самом переходе, а в месте куда ты переходишь, то есть в самой метке. Вот в ней проблема, именно она и создает неочевидности. Сама же конструкция goto label - ничего криминального в себе не имеет, она подобна break/return/еще чему то подобному.<br>
В случае с циклами - там есть блоки&#33; Сейчас любая среда разработки позволяет без потери контеста прыгать по блокам, нажатием 1-2 кнопок, а с меткой не так. Тебе ее во первых нужно сначало найти глазами, если функция большая и запутанная - ты будешь ее искать поиском, если файл на 5 тысяч строк, и метка одна на функцию, но есть такая же в других функциях - ты по поиск тупо вылетишь за контекст функции. <br>
Если бы IDE позволяли двиг аться по меткам как например по блокам - я думаю его говнокодность тут же бы упала на 50% как минимум. А IDE даже не подсвечивают метку, я уж не говорю о том, чтоб по ним можно было перемещаться. Да ты можешь сказать что в большинстве IDE есть закладки(bookmarks), которые можно поставить на метки. Но ведь - это лишняя работа, которая занимает время и отвлекает.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T07:15:55+00:00">09.02.18, 07:15</time></span><div class='quote '>Имеет, но приводимые тут примеры к говнокоду не относятся - более понятно ты их не напишешь.</div></div><br>
Потому что это велосипеды. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T07:15:55+00:00">09.02.18, 07:15</time></span><div class='quote '>Вообще-то таки есть - почти в каждой. Вот только почти каждая программа пишется на языках, где есть finally, деструкторы или defer-ы, из-за чего ... а впрочем, это уже минимум четвёртый раз в теме говорится, до тебя один фиг не дойдёт это :D</div></div><br>
Нет, ты передергиваешь, речь не о return&#39;ах каких нибудь, потому что return&#39;ом ты вылетишь в другую функцию, а с помощью меток ты можешь сделать сложный цикл. И что там намудрил автор юзая метки - еще понять нужно, а полагаться на то, что все будут использовать goto только так чтоб все было понятно - глупо.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T07:15:55+00:00">09.02.18, 07:15</time></span><div class='quote '>Киля, если ты прочитаешь тот пост, на который ты отвечаешь, то на вопросы - почему я не юзал goto в си и почему не юзаю сейчас - ты увидишь. Ты, конечно, не особо понятливый, но на это уж тебя должно хватить :D</div></div><br>
Ты не переживай. Я читал, и понял. Потому что ты не сталкивался с такими ситуациями. И не столкнешься в 99.9999% случаев в будущем. Именно по этому goto зло. А когда столкнешься - то это будет исключительный случай. У майкрософта же - метки используются везде где нужно или нет. Ты когда будешь писать такой код, который пишут они 100% метки не будешь использовать, ровно как и любой другой вменяемый разработчик.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T07:15:55+00:00">09.02.18, 07:15</time></span><div class='quote '>Ну давай посчитаем, какие примеры тут приводили</div></div><br>
Это все велосипеды и надуманные примеры. В реальности таких ситуаций ни у меня, ни у тебя не возникало.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T07:15:55+00:00">09.02.18, 07:15</time></span><div class='quote '>4) Примеры с различных известных сишных проектов и, особенно, &quot;первая функция с goto&quot; из исходников nginx.</div></div><br>
Потому что это они так написали, а не потому что там goto просится. Именно по этому вы и приводите эти примеры. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T08:16:37+00:00">09.02.18, 08:16</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:59:10+00:00">09.02.18, 06:59</time></span><div class='quote '>Слегка убрал оверхед до одной лишней проверки :)</div></div><br>
У тебя из за continue выходит не хилый оверхед. На сколько я помню - continue - дорогая операция в цикле, и ее нужно избегать. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T08:20:43+00:00">09.02.18, 08:20</time></span></span><br>
Ну хотя он там выполняется 1 раз всего. В принципе ниче в нем криминального нет. Я просто не доглядел. Думал он там всегда выполняется.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759820</guid>
        <pubDate>Fri, 09 Feb 2018 07:15:55 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759820</link>
        <description><![CDATA[OpenGL: О, Киля проснулся. И как обычно - несёт какую-то чушь, на которую уже были даны ответы  :lool:<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:06:00+00:00">09.02.18, 06:06</time></span><div class='quote '>Слушай, а хорошую ты позицию занял, выдумал какую то хрень, и топишь за нее. cppasm почему то не догадался придраться к тому, к чему придрался ты. </div></div><br>
Он придрался ровно к тому же, что и я, просто у кого-то с пониманием контекста проблемы  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:06:00+00:00">09.02.18, 06:06</time></span><div class='quote '>Хорошо написанный код - я бы понял сразу, просто кинув взгляд(за исключением алгоритмов и разных вычислений). Тут нужно метку искать по коду глазами, и пока ты не найдешь все метки глазами - ты не поймешь что там происодит.</div></div><br>
Зачем её искать? Инструкция goto ok - очевидно, означает переход к варианту, когда ок. Тебе не очевидно? Могу только посочувствовать твоей альтернативной понятливости  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:06:00+00:00">09.02.18, 06:06</time></span><div class='quote '>Я не отрицал что может и найти. Я утверждал что goto - зло и Говнокод. Говнокод любой, так же имеет полное право на жизнь. Ты путаешь причину со следствием.</div></div><br>
Имеет, но приводимые тут примеры к говнокоду не относятся - более понятно ты их не напишешь.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:06:00+00:00">09.02.18, 06:06</time></span><div class='quote '>Вы говорите. Даже придумали шаблон какой то. В вашем мире почти в каждой программе приходится прыгать из вложенных функций в конец функции для очистки ресурсов и т.п. </div></div><br>
Вообще-то таки есть - почти в каждой. Вот только почти каждая программа пишется на языках, где есть finally, деструкторы или defer-ы, из-за чего ... а впрочем, это уже минимум четвёртый раз в теме говорится, до тебя один фиг не дойдёт это  :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:06:00+00:00">09.02.18, 06:06</time></span><div class='quote '>Слушай, мне уже интересно даже стало - на чем же ты пишешь? В С++ что нет goto? Да блин goto наверное разве что в sql каком нибудь и в функциональных языках нет. А в импирических он помоему везде есть. Когда писал на Си, ты же говорил что писал на Си - почему не прыгал из циклов? Не применял goto? Как же так?</div></div><br>
 :crazy: <br>
Киля, если ты прочитаешь тот пост, на который ты отвечаешь, то на вопросы - почему я не юзал goto в си и почему не юзаю сейчас - ты увидишь. Ты, конечно, не особо понятливый, но на это уж тебя должно хватить :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:06:00+00:00">09.02.18, 06:06</time></span><div class='quote '>Ага, только вот на практике таких мест нету. И привести такие места вы не в состоянии, ну разве что только велосипедами.</div></div><br>
Ну давай посчитаем, какие примеры тут приводили<br>
1) Выход из множественных циклов. Очевидно, решается без goto не всегда - вынос в отдельную функцию может быть неудобен, если цикл внутри юзает много переменных, локальных для функции, где лежит этот множественный цикл. Ситуация нечастая, но бывает.<br>
2) Переход к очистке ресурсов. Вынос в отдельную функцию неудобен по той же причине, что и предыдущий пункт, а do..while мало того, что вырвиглазный и создаёт дополнительный отступ, так ещё и помешает выходить из циклов. Вывод - в си не решается без attribute cleanup и прочих нестандартных расширений в принципе. По-моему самый частый случай его использования, так что неудивительно, что переход к другому языку, убирая необходимость в этом самом частом частом использовании, практически полностью убирает необходимость в самом goto.<br>
3) Пример Qraizer-а. Никто, включая тебя, более понятный код не написал.<br>
4) Примеры с различных известных сишных проектов и, особенно, &quot;первая функция с goto&quot; из исходников nginx. Может быть переписана без него, но за счёт копипаста с вызовом return other_function(some_parameters), что менее читаемо - понять, в каких случаях функция вернёт ok, будет сложнее, чем в текущем варианте. Но, впрочем, конкретный вариант без goto усложняется не сильно - можно считать его приемлемым, если тебе от этого будет легче.]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759818</guid>
        <pubDate>Fri, 09 Feb 2018 06:59:10 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759818</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759815'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:41:16+00:00">09.02.18, 06:41</time></span><div class='quote '>&quot;Другие варианты&quot; решения описанной задачи в студию :-?</div></div><br>
Слегка убрал оверхед до одной лишней проверки  :) <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;fstream&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">bool NeedRestore() {</div><div class="code_line">&nbsp;&nbsp;ifstream f(&quot;saved.txt&quot;);</div><div class="code_line">&nbsp;&nbsp;return f.good();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void FuncSave(const int a, const int b, const int c) {</div><div class="code_line">&nbsp;&nbsp;ofstream f(&quot;saved.txt&quot;);</div><div class="code_line">&nbsp;&nbsp;f &#60;&#60; a &#60;&#60; &quot;\n&quot; &#60;&#60; b &#60;&#60; &quot;\n&quot; &#60;&#60; c;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void FuncRestore(int&amp; a, int&amp; b, int&amp; c) {</div><div class="code_line">&nbsp;&nbsp;ifstream f(&quot;saved.txt&quot;);</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;Восстанавливаемся и продолжаем ...&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;f &#62;&#62; a &#62;&#62; b &#62;&#62; c;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp;bool R = NeedRestore();</div><div class="code_line">&nbsp;&nbsp;for(int i=0; i&#60;5; i++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int j=i; j&#60;5; j++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for(int k=j; k&#60;5; k++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (R) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FuncRestore(i,j,k);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;R = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// делаем важное дело</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; i &#60;&#60; &quot;:&quot; &#60;&#60; j &#60;&#60; &quot;:&quot; &#60;&#60; k &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// эмуляция прерывания</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (i==2 &amp;&amp; j==2 &amp;&amp; k==2) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; &quot;Прервемся на 2:2:2 и сохраняемся&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FuncSave(i,j,k);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>JoeUser</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759815</guid>
        <pubDate>Fri, 09 Feb 2018 06:41:16 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759815</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759809'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T05:59:14+00:00">09.02.18, 05:59</time></span><div class='quote '>Но на работе я бы вообще сделал шаг назад и посмотрел на другие варианты решения вцелом. </div></div><br>
&quot;Другие варианты&quot; решения описанной задачи в студию  :-? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759809'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T05:59:14+00:00">09.02.18, 05:59</time></span><div class='quote '>Зато с использованием уже проблем не будет, там будет ясно, что и зачем делается</div></div><br>
Ога, вот только выглядеть в целом будет всё как-то <a class='tag-url' href='https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition' target='_blank'>так</a>  :crazy: Городить некий итератор, нужный только в одном месте и который менее читаемый, чем вариант втупую - глупость уровня Кили.]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759812</guid>
        <pubDate>Fri, 09 Feb 2018 06:14:55 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759812</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759809'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T05:59:14+00:00">09.02.18, 05:59</time></span><div class='quote '>Но на работе я бы вообще сделал шаг назад и посмотрел на другие варианты решения вцелом. </div></div><br>
Ну так одно дело переписывать уже существующий код, и другое дело писать с нуля. Существующий код - всегда сложнее модернизировать(особенно если не ты автор), чем переписать с нуля. У меня была лишь цель избавится от goto любыми способами, более менее приемлемыми. Как только выкинул из цикла сохранение в файл, тут же стал понятен алгоритм работы программы, и в голову начали лезть мысли, как это все можно переписать без goto.]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759811</guid>
        <pubDate>Fri, 09 Feb 2018 06:12:30 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759811</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T06:06:00+00:00">09.02.18, 06:06</time></span><div class='quote '>Ага, а то что там Sleep(1) стоит в цикле - тебя значит нисколько не смутило?</div></div><br>
Мы же говорим о количестве операций, а не о времени. Я не знаю как там реализован слип, но в реализации без goto необоснованно больше тратятся энергоресурсы нашей планеты&#33; 8-)]]></description>
        <author>JoeUser</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759810</guid>
        <pubDate>Fri, 09 Feb 2018 06:06:00 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759810</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>Твой пример - втупую переписанный код без осознания того, что это схема и, соответсвенно, того, в чём там реальная сложность, только и всего. И поскольку это уже было разжёвано не один раз, то я повторять смысла, что конкретно у тебя не так, не вижу - ты всё равно не поймёшь :D</div></div><br>
Слушай, а хорошую ты позицию занял, выдумал какую то хрень, и топишь за нее. cppasm почему то не догадался придраться к тому, к чему придрался ты. Он наверное просто хуже тебя знает что он сам и писал? Или ты за него додумал и привел аргумент? Чтоб та программа работала как говоришь ты, необходимо было вставить после цикла хотя бы три точки. Чтобы было ясно - что между циклом и выходом есть еще код. В противном случае ты не имеешь никакого морального права упрекать меня в том, что мой пример не соответствует его примеру. Приводи свой пример, как ты расписываешь, я перепишу его, если будет время. А то сначало привели какую то шнягу, вам ее переписали, а потом вы меняете условие задачи, чтоб обвинить меня в том, что мой пример не работает? Не по людски получается как то. Я не телепат что бы догадываться что он там хотел написать. И где гарантии что ты еще щас что то не придумаешь, может у него там еще одна метка есть, за циклом, которая перемещает нас обратно внутрь цикла, ну это же очевидно, просто ты ее не видешь, так как не понимаешь логику программы. Да? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>Я - не неосилятор, как некоторые, и сразу понял, что делает обсуждаемая функция, равно как и понял логику её работы. Знал бы спецификацию http или семантику полей, в которые она пишет - понял бы полностью, вплоть до возможности не напрягаясь внести в неё изменения. ЧЯДНТ? :D</div></div><br>
А я неосилятор, даже смотреть ее не стал. Я просто кинул взгляд и сразу понял - это трешь. Хорошо написанный код - я бы понял сразу, просто кинув взгляд(за исключением алгоритмов и разных вычислений). Тут нужно <strong class='tag-b'>метку искать</strong> по коду <strong class='tag-b'>глазами</strong>, и пока ты не найдешь все метки глазами - ты не поймешь что там происодит. А это уже -10 к читабельности кода. Если меток больше 1 и раскиданы по функции это уже -50 к читабельности кода. В итоге функция может быть и простой, но только не удобочитаемой. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>Капитан, перелогинься :lool: Кто тут с этим спорит вообще? Ну да, может и не найти, и в этом случае лучше написать без goto. Но ведь может и найти - что тогда?</div></div><br>
Ну ты же сравнивал предположение с моим утверждением :-?  Я не отрицал что может и найти. Я утверждал что goto - <strong class='tag-b'>зло</strong> и <strong class='tag-b'>Говнокод</strong>. Говнокод любой, так же имеет полное право на жизнь. Ты путаешь причину со следствием.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>Ты сам посчитаешь, сколько раз я говорил, что я не пишу на Си, поэтому самое частое применение goto - прыжок к очистке - мне не нужен, или это сделать мне? </div></div><br>
Слушай, мне уже интересно даже стало - на чем же ты пишешь? В С++ что нет goto? Да блин goto наверное разве что в sql каком нибудь и в функциональных языках нет.  А в импирических он помоему везде есть. Когда писал на Си, ты же говорил что писал на Си - почему не прыгал из циклов? Не применял goto? Как же так?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>Внимание, вопрос - кто тут говорит, что надо писать программу, везде пихая goto? :D</div></div><br>
Вы говорите. Даже придумали шаблон какой то. В вашем мире почти в каждой программе приходится прыгать из вложенных функций в конец функции для очистки ресурсов и т.п. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>Вау. А венгерский алгоритм, алгоритм Флойда или вышеописанная мной задача, где я &quot;использовал&quot; goto - перебор всех аргументов в функции f(x, y, z) ты тоже будешь разбивать на функции? :crazy:</div></div><br>
Так я же написал - в 95% случаях я не юзаю больше двух вложенных циклов, но есть места - где юзаю, либо от лени, либо от специфики задачи. Что не понятно то?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>А что такого? Я считаю, что юзать goto там, где он к месту - нормально. Можно даже усилить - юзать %something% там, где оно к месту - нормально. Ну а почему я сам это не делаю - на это может быть тысяча причин. Или ты делаешь всё, что считаешь нормальным? :crazy:</div></div><br>
Ага, только вот на практике таких мест нету. И привести такие места вы не в состоянии, ну разве что только велосипедами.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759766'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T19:42:41+00:00">08.02.18, 19:42</time></span><div class='quote '>Я в курсе, что ты это говорил, но поскольку ты старательно пытаешься доказать, что goto, когда оно в тему, на самом деле всё ухудшает - я просто записал эту твою фразу в обычное балабольство :D</div></div><br>
Вся проблема в том, что &quot;тут goto в тему&quot; - это утопия. Это вымышленный рай для наркомана. Понимаешь? В теории может быть и есть такие места, а на практике их нет, есть либо лень, либо безысходность от того, что кто то вот так все криво написал, и времени переписывать у тебя нет. Но это не значит что это хорошее место для использования goto, это значит что это плохое место в принципе, и просто не хватило времени/сил/желания от него избавится и придется потом жить с этим всю оставшуюся жизнь&#33; <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T06:08:02+00:00">09.02.18, 06:08</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759808'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T05:59:06+00:00">09.02.18, 05:59</time></span><div class='quote '> Но оверхед на проверках явный.<br>
</div></div><br>
Ага, а то что там Sleep(1) стоит в цикле - тебя значит нисколько не смутило? :D]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759809</guid>
        <pubDate>Fri, 09 Feb 2018 05:59:14 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759809</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T20:51:40+00:00">08.02.18, 20:51</time></span><div class='quote '>Что скажете?</div></div><br>
Думаю, что для прода этот вариант лучше, чем с goto :) <br>
Но на работе я бы вообще сделал шаг назад и посмотрел на другие варианты решения вцелом. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-02-09T06:03:06+00:00">09.02.18, 06:03</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2018-02-09T05:55:05+00:00">09.02.18, 05:55</time></span><div class='quote '>Куда менее читаемо - порядок обхода сразу и не ясен.</div></div><br>
Зато с использованием уже проблем не будет, там будет ясно, что и зачем делается. А над этим куском, отвечающим за переход к следующему, можно дальше подумать. В итоге лапши меньше.]]></description>
        <author>D_KEY</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759808</guid>
        <pubDate>Fri, 09 Feb 2018 05:59:06 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759808</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T22:27:21+00:00">08.02.18, 22:27</time></span><div class='quote '>Что теперь деать? </div></div><br>
Ну и заводной ты чел, Киля :lol: <br>
У меня тож нечто похожее получилось без прыжков. Но оверхед на проверках явный.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;fstream&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">void FuncSave(const int a, const int b, const int c) {</div><div class="code_line">&nbsp;&nbsp;ofstream f(&quot;saved.txt&quot;);</div><div class="code_line">&nbsp;&nbsp;f &#60;&#60; a &#60;&#60; &quot;\n&quot; &#60;&#60; b &#60;&#60; &quot;\n&quot; &#60;&#60; c;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">bool FuncRestore(int&amp; a, int&amp; b, int&amp; c) {</div><div class="code_line">&nbsp;&nbsp;a = 0; b = 0; c = 0;</div><div class="code_line">&nbsp;&nbsp;ifstream f(&quot;saved.txt&quot;);</div><div class="code_line">&nbsp;&nbsp;if (!f.good()) return false;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;Восстанавливаемся и продолжаем ...&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;f &#62;&#62; a &#62;&#62; b &#62;&#62; c;</div><div class="code_line">&nbsp;&nbsp;return true;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp;int i,j,k;</div><div class="code_line">&nbsp;&nbsp;bool r = FuncRestore(i,j,k);</div><div class="code_line">&nbsp;&nbsp;for(i = (r) ? i:0; i&#60;5; i++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(j = (r) ? j:i; j&#60;5; j++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for(k = (r) ? k:j; k&#60;5; k++) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (r) { r = false; continue; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// делаем важное дело</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; i &#60;&#60; &quot;:&quot; &#60;&#60; j &#60;&#60; &quot;:&quot; &#60;&#60; k &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// эмуляция прерывания</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (i==2 &amp;&amp; j==2 &amp;&amp; k==2) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cout &#60;&#60; &quot;Прервемся на 2:2:2 и сохраняемся&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FuncSave(i,j,k);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Вывод после двух запусков вот такой:<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">0:0:0</div><div class="code_line">0:0:1</div><div class="code_line">0:0:2</div><div class="code_line">0:0:3</div><div class="code_line">0:0:4</div><div class="code_line">0:1:1</div><div class="code_line">0:1:2</div><div class="code_line">0:1:3</div><div class="code_line">0:1:4</div><div class="code_line">0:2:2</div><div class="code_line">0:2:3</div><div class="code_line">0:2:4</div><div class="code_line">0:3:3</div><div class="code_line">0:3:4</div><div class="code_line">0:4:4</div><div class="code_line">1:1:1</div><div class="code_line">1:1:2</div><div class="code_line">1:1:3</div><div class="code_line">1:1:4</div><div class="code_line">1:2:2</div><div class="code_line">1:2:3</div><div class="code_line">1:2:4</div><div class="code_line">1:3:3</div><div class="code_line">1:3:4</div><div class="code_line">1:4:4</div><div class="code_line">2:2:2</div><div class="code_line">Прервемся на 2:2:2 и сохраняемся</div><div class="code_line">Для закрытия данного окна нажмите &#60;ВВОД&#62;...</div><div class="code_line">&nbsp;</div><div class="code_line">Восстанавливаемся и продолжаем ...</div><div class="code_line">2:2:3</div><div class="code_line">2:2:4</div><div class="code_line">2:3:3</div><div class="code_line">2:3:4</div><div class="code_line">2:4:4</div><div class="code_line">3:3:3</div><div class="code_line">3:3:4</div><div class="code_line">3:4:4</div><div class="code_line">4:4:4</div><div class="code_line">Для закрытия данного окна нажмите &#60;ВВОД&#62;...</div></ol></div></div></div></div></div></div>]]></description>
        <author>JoeUser</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759807</guid>
        <pubDate>Fri, 09 Feb 2018 05:55:05 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759807</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759789'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T20:45:24+00:00">08.02.18, 20:45</time></span><div class='quote '>А почему просто не завести классик для &quot;позиции&quot; с каким-то next и is_done(или вообще полноценные итераторы/диапазоны)? Мне кажется, что в реальном проде что-то такое и было бы...</div></div><br>
Я так и сделал в своей этой задаче. next получился примерно таким:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bool next()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int *a[n] = {&amp;i, &amp;j, &amp;k, &amp;l};</div><div class="code_line">&nbsp;&nbsp; &nbsp;int c = n - 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;while(c &#62;= 0 &amp;&amp; *a[c] == 10) --c;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(c &#60; 0) return false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;while(c &#60; n)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;++c;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;*a[c] = *a[c - 1];</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return true;</div><div class="code_line">}</div></ol></div></div></div></div><br>
Куда менее читаемо - порядок обхода сразу и не ясен.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T20:51:40+00:00">08.02.18, 20:51</time></span><div class='quote '>Что скажете?</div></div><br>
Весьма неплохо, кстати. Я бы даже сказал, что вполне приемлемо - проследить логику тут сложнее, чем с goto, но проще, чем в вариантах, предлагаемых в той теме. Плюс по-моему вполне заслужил  :yes:]]></description>
        <author>OpenGL</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759804</guid>
        <pubDate>Fri, 09 Feb 2018 05:04:59 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759804</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T20:51:40+00:00">08.02.18, 20:51</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412112&view=findpost&p=3759789'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2018-02-08T20:45:24+00:00">08.02.18, 20:45</time></span><div class='quote '>А почему просто не завести классик для &quot;позиции&quot; с каким-то next и is_done(или вообще полноценные итераторы/диапазоны)? Мне кажется, что в реальном проде что-то такое и было бы... </div></div><br>
Потому что тут идет переписывание уже существующего, готового кода, а не написание с нуля  :rolleyes:</div></div><br>
Это больше к <strong class='tag-b'>Qraizer</strong>&#39;у вопрос.]]></description>
        <author>D_KEY</author>
        <category>Наши голосования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759799</guid>
        <pubDate>Thu, 08 Feb 2018 22:27:21 +0000</pubDate>
        <title>#define ИЛИ template?</title>
        <link>https://forum.sources.ru/index.php?showtopic=412112&amp;view=findpost&amp;p=3759799</link>
        <description><![CDATA[KILLER: Ну вот все спать ушились, а у меня голова забита этим гребаным алгоритмом, и мыслей куча. Что теперь деать?]]></description>
        <author>KILLER</author>
        <category>Наши голосования</category>
      </item>
	
      </channel>
      </rss>
	