<?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=380454&amp;view=findpost&amp;p=3810260</guid>
        <pubDate>Thu, 12 Sep 2019 23:04:40 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810260</link>
        <description><![CDATA[JoeUser: :wall:]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810247</guid>
        <pubDate>Thu, 12 Sep 2019 20:46:18 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810247</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810218'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-12T13:26:52+00:00">12.09.19, 13:26</time></span><div class='quote '>Теперь инфы достаточно? </div></div><br>
Читаю :wacko:]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810222</guid>
        <pubDate>Thu, 12 Sep 2019 15:03:42 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810222</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810180'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T22:00:18+00:00">11.09.19, 22:00</time></span><div class='quote '><strong class='tag-b'>Qraizer</strong>, надеюсь ты меня понял. Ибо все твои вопросы - какие-то эфемерно-нечеткие, хочется поговорить - но надо сперва осознать тему на 100%.</div></div>Понял. Не понял, зачем. Систему-то представить можно. Ну раз ты просишь...<br>
Есть функциональность, обладающая определёнными правилами входы=&gt;выходы, полностью алгоритмически формализуемыми. Она полностью описана требованиями в плане её поведения. Представлены в виде документов html и MSWord. Есть код, потенциально реализующий эти требования. Есть тесты, выполняющие разработанные по требованиям тестовые примеры на коде, их реализующем. В них каждый отдельный элемент поведения имеет соответствующий чётко определённый набор тестовых примеров, проверяющие этот элемент. Каждый такой пример имеет описание и реализацию. В каждом тесте тестируемых элементов может быть много, всё зависит от вида самих требований и их декомпозиции в независимые комбинации поведенческих наборов элементов. Каждый тест прошёл процедуру ревью и принят после устранения выявленных в них недостатков. Выполняемые тестовые примеры также могут – и делают это – выявлять несоответствие между описанным поведением и реализованным. На каждый такой случай открывается СП (Сообщение о Проблеме). Тесты исполняются дважды, на &quot;боевом&quot; коде и инструментированном. Последний нужен для сбора структурного покрытия с целью дальнейшего анализа покрытия кода тестами, кодом требований и тестом требований. Уровень MC/DC, но это неважно. Двойное исполнение требуется, чтобы показать отсутствие изменений в поведении инструментированного кода от &quot;боевого&quot;, т.е. оба прогона должны выдать строго одинаковые отчёты.<br>
По окончанию цикла разработки тестов требуется сформировать файлы исходных данных и результатов процедуры верификации, в которых в удобной форме конспективно будет суммировано всё и оставлены ссылки на полные результаты, со всеми деталями. Для этого выполняется процедура RFS (Ready For SCC — Structural Coverage Collecting; предшествует SCA — Structural Coverage Analyzing). Это значит, что то, что делали авторы и ревьюеры тестов по отдельности для каждого, теперь выполняется всё скопом, для всех тестов по этой конкретной функциональности. При этом собирается итоговое покрытие, теоретически долженствующие быть 100% по всей функциональности, а результаты должны совпадать с ранее полученными авторами этих тестов. По результатам нужно сгенерировать файлы в формате MSWord и MSExcel:<ul class="tag-list"><li>исходные данные процедуры верификации; содержит исходные требования на каждый элемент функциональности и соответствующие им последовательности тестовых примеров с чётким взаимооднозначным соответствием; нужны только описания примеров без реализаций; структура документа должна соответствовать исходной структуре документов требований;</li><li>результаты процедуры верификации; содержит точно так же структурированный документ с результатами исполнения примеров на &quot;боевом&quot; коде и отдельно на инструментированном с упоминанием СП, открытых этой тестовой процедурой; результатов достаточно конспективных, с итоговыми цифрами без детализации по каждому тестовому шагу;</li><li>таблицы открытых СП; таблицы бланков ревью тестов; таблицы записей конфигурационного управления процесса верификации с контрольными суммами и версиями как артефактов входных данных, так и полученных и/или сгенерированных результатов; всё это берётся или кладётся в систему контроля версий;</li><li>матрица трассировки.</li></ul>Очень много рутинной и хорошо формализуемой работы. Руками она делается в ~200 человеко-часов. Сужу по объёму данных, который был обработан на рубеже июля-августа сего года. Примерно сравнил время, потраченное на аналогичную работу по другому проекту руками, когда никакой автоматизации ещё не было, и с помощью упомянутой всуе утилиточки за авторством Вашего покорного слуги, экстраполировав фактически затраченное время (1 рабочий день, из которых 7 часов и 48 минут гонялись тесты) на если бы без автоматизации.<br>
Теперь самое интересное.<ul class="tag-list"><li>Функциональностей – 8. Похожих, но не аналогичных.</li><li>Процессоров – 4. По два на каждую четвёрку функциональностей. Итого каждая четвёрка функциональностей исполняется на двух процессорах. Часть, очень небольшая, но она есть, элементов функциональностей капельку отличается на своих двух процессорах, соответственно небольшая часть тестов уникальна для процессора, но основная представлены в одном экземпляре. Всё это вносит сумятицу в наименования артефактов и связи между ними.</li><li>Процессоры не x86. Три разных PPC и один ARM. Они представлены в виде минималистичных плат, которые в &quot;боевом&quot; режиме вставляются в большой модуль, а уже он подключается к интеграционному испытательному стенду. Но у нас они просто лежат на столе и подключаются по UART к ПК, эдакому испытательному мини-стенду. Тесты могут гоняться параллельно сразу на четырёх, но естественно каждый процессор одновременно может исполнять только один тест.</li><li>Соответственно матрица трассировки оказывается довольно непростой. Трассировка System Level на High Level и обратно. Трассировка High Level на Low Level и обратно с учётом функциональностей. Трассировка Low Level на код и обратно с учётом процессора. Трассировка тестовых примеров на Low Level и обратно с учётом функциональностей и процессора.</li></ul>Вот теперь можно легко представить, что творится на RFS. Получаются данные из SVN. Из тестов формируются пакеты RFS сообразно функциональностям и процессорам. Каждый тест компилируется, собирается и отправляется на исполнение на соответствующую железку. Два раза, чтобы получить ещё и покрытие. По RS232-му заливается исполняемый образ теста, взаимодействуя с его начальным загрузчиком, по нему же оттуда обратно получаются репорты. По каждой железке как минимум нужен асинхронный приём + простенький GUI на непредвиденные случаи + управление. Тесты для отчётности нужно ещё нарезать на тестовые примеры и идентификационную инфу, параллельно собирая отчётные документы. Результаты выкладываются в SVN.<br>
На этом маршруте многое может пойти не так. Например, тест упадёт из-за незамеченного автором/ревьюером UB, документ требований окажется с нарушениями структуры, у теста окажется кривая идентификация, у функциональностей будут неверные TraceID итд итп ипр. Все действия утилиточка логгирует, чтобы в реальном времени был виден прогресс и что/где, если вдруг, не так. На консоль сразу и в файлик для истории. В файлик ещё и логгирование подетальнее. Захотеть нажать ESC может оказаться по разными причинам. Взаимодействие с MSоффисом идёт через OLE Automation, и в случае чего все OLE-объекты останутся висеть, т.к. находятся в другом процессе, а документы останутся занятыми безоконными приложениями Офиса.<br>
<br>
Не устал осмысливать, <strong class='tag-b'>JoeUser</strong>? Теперь инфы достаточно?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810218</guid>
        <pubDate>Thu, 12 Sep 2019 13:26:52 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810218</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810180'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T22:00:18+00:00">11.09.19, 22:00</time></span><div class='quote '>Ты прикинь, что нужно было бы реализовать в плане глобальных откатов. Компилятор должен был бы перечислить и реализовать все состояния в созданных экземпляров классов, и более того организовать оптимальную последовательность их разрушения. Да, разрушить &quot;ветку дерева&quot; подчиненных экземпляров - более-менее понятно и осуществимо. А вот вопрос разрушения ветки в произвольной точке созданной иерархии ... я бы сказал ... неоднозначно. Формально пробежать дерево можно, но на сколько это будет правильно, и функционально осуществимо - большой большой вопрос.</div></div>Та легко. Во-первых, Стандарт обязывает, и любой компилер это реализует, куда денется. Во-вторых, в рассказе про SEH я показал, как это делается просто с точки зрения ABI и легковесно с точки зрения производительности. При условии отсутствия исключений, конечно, при размотке стека производительность естественно проседает, но не запредельно, руками подобный код ты смог бы оптимизировать, но только если конкретно под каждый случай.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810180</guid>
        <pubDate>Wed, 11 Sep 2019 22:00:18 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810180</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810176'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T21:01:54+00:00">11.09.19, 21:01</time></span><div class='quote '>Ок, тогда расскажи, как будешь реагировать на ESC пользователя, откатывая рабочий цикл с сотней объектов на стеке.</div></div><br>
Надо сказать &quot;спасибо&quot;, что нынешняя реализация в С++ есть&#33; Ты прикинь, что нужно было бы реализовать в плане глобальных откатов. Компилятор должен был бы перечислить и реализовать все состояния в созданных экземпляров классов, и более того организовать оптимальную последовательность их разрушения. Да, разрушить &quot;ветку дерева&quot; подчиненных экземпляров - более-менее понятно и осуществимо. А вот вопрос разрушения ветки в произвольной точке созданной иерархии ... я бы сказал ... неоднозначно. Формально пробежать дерево можно, но на сколько это будет правильно, и функционально осуществимо - большой большой вопрос.<br>
<br>
А теперь ответы:<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810176'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T21:01:54+00:00">11.09.19, 21:01</time></span><div class='quote '>Т.е. по-твоему в бизнес-логике отказ – неважно, по причине ошибки или какой-либо другой – от исполнения части этой логики не может быть заложен масштабнее, чем на одну, самую малую, единицу декомпозиции?</div></div><br>
Я так не считаю. Я считаю, что любая программа должна описываться формально состояниями. Если параметров, влияющих на состояния, мало - тупо таблицей. Если параметров заметно много, и мы получаем отчетливую разряженную матрицу - тогда просто вектором состояний. Таким образом, ежели мы говорим о &quot;единице компиляции&quot;, мы или ошибаемся в архитектуре, или не ошибаемся и соотносим ошибку в нашу созданную мат.модель создаваемой программы. А вот уже там должны и обязаны быть предусмотрены обработчики &quot;ошибочных&quot; состояний. Это ИМХО.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810176'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T21:01:54+00:00">11.09.19, 21:01</time></span><div class='quote '>Ок, тогда расскажи, как будешь реагировать на ESC пользователя, откатывая рабочий цикл с сотней объектов на стеке.</div></div><br>
Нуууу .... тут нужна детализация ТЗ. Задача задана нечетко&#33; Про написанное я бы наверное - запрограммил сериализацию. Запомнил всю последовательность объектов и их сортировку, запомнил бы текущий элемент. А вот на реакцию на ESC - вопрос отдельный&#33; Это ПАУЗА или ЗАВЕРШЕНИЕ или ПОФИК - это и обрабатываем. Плохой пример, ибо еще варианты и условия есть.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810176'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T21:01:54+00:00">11.09.19, 21:01</time></span><div class='quote '>Среди которых объект интерфейса по UART, имеющий ещё три объекта-нитки приёма-передачи, объект-логгер, связанный ещё с двумя объектами-журналами в файл и консоль, и восемь десятков – приблизительно, хрен их там знает, сколько понадобится – OLE-проксей к внешним приложениям Оффиса, представляющим документы, параграфы, списки, стили, таблицы, книги, листы/ячейки/колонки и сами приложения, а также десяток std::коллекций с инфой оттуда и туда, а ещё сикось-накось связанной с тудой и оттудовой.</div></div><br>
Дружище, теряю нить.<br>
Ты люто меня запугал структурой, и мне уже страшно&#33;&#33;&#33; Однако ... у нас есть две соперничающие методики постройки систем:<br>
1) Дерево <br>
2)Сеть<br>
С первым - проблем нет вааще, полностью&#33; И пофик твои страшили, ибо они последовательны и в своем ранге практически независимы. А вот  со второй архитектурой возможны проблемсы, и я ее боюсь и всеми средствами стараюсь избежать всегда. Даже в ущерб усложнения&#33; Там сложность состояний задирается на порядки порядков.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810176'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T21:01:54+00:00">11.09.19, 21:01</time></span><div class='quote '>Очень интересно посмотреть хотя бы на по-Дейкстровски структурные блок-схемки и формальные протоколы взаимодействия отдельных компонент, а уж как это будет реализовано без нелокального управления потоком исполнения я, так и быть, сам попытаюсь представить. Потом сходим в холивар по goto, где я ничего нового уже не напишу</div></div><br>
Я сломал моск  :&#39;( <br>
<br>
Я много прослушал различных супер-лекций по программному-проектированию, но они все и рядом не стояли с моим, увы покойным, зав.лабом Римским Генадием Васильевичем, профессором, доктором технических наук некогда Академии Наук БССР. А он говорил, что сложные задачи решать просто: декомпозиция-анализ-тесты-композиция ... и вы в шоколаде&#33; Мой же опыт подсказывает - &quot;собирай дерево&quot;, влезешь &quot;в сеть&quot; - запаришься кувыркаться в дебаге.<br>
<br>
<strong class='tag-b'>Qraizer</strong>, надеюсь ты меня понял. Ибо все твои вопросы - какие-то эфемерно-нечеткие, хочется поговорить - но надо сперва осознать тему на 100%.]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810179</guid>
        <pubDate>Wed, 11 Sep 2019 21:59:09 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810179</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810166'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T19:33:45+00:00">11.09.19, 19:33</time></span><div class='quote '>Просто ты тогда спорил с аргументами в точности совпадающими с теми, которые приводишь сейчас. Это и правда смешно. </div></div><br>
Где, покажи где я спорил с аргументами, в точности совпадающими с теми? Там спор был исключения vs коды возврата. Тут я не спорил против исключений, или за коды возврата, я доказывал одну простую вещь: Что понять какие исключения может кидать функция - сложнее, чем понять, какие коды возврата она может возвращать. Вот и все. Я даже для упоротых написал, причем неоднократно:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809675'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-08T17:54:55+00:00">08.09.19, 17:54</time></span><div class='quote '><strong class='tag-b'>Я нигде не пишу что коды возврата хуже или лучше исключений.</strong> Мне вообще фиолетово, я использую и то и другое. Просто OpenGL написал что &quot;ПОмнить какие исключения кидает функция так же просто, как и помнить какие ошибки при кодах возврата она возвращает&quot;. Я с ним не согласился. Причем писал он это тебе, на что ты ему вроде тоже возражал. А дальше тема перешла в нечто другое. </div></div><br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810167'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T19:39:16+00:00">11.09.19, 19:39</time></span><div class='quote '>OpenGL, наверное можно было не прямые цитаты давать, а отвечать на посты Кили его же постами :)<br>
<br>
Но вообще если серьезно, то времени не так и мало прошло, человек мог поменять мнение. </div></div><br>
 :facepalm:  <br>
<a class='tag-url' href='https://www.youtube.com/watch?v=WdnEx13C904' target='_blank'>https://www.youtube.com/watch?v=WdnEx13C904</a>]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810176</guid>
        <pubDate>Wed, 11 Sep 2019 21:01:54 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810176</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810162'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T19:21:25+00:00">11.09.19, 19:21</time></span><div class='quote '>Локально - это естественно, глобально - дичь.</div></div>Т.е. по-твоему в бизнес-логике отказ – неважно, по причине ошибки или какой-либо другой – от исполнения части этой логики не может быть заложен масштабнее, чем на одну, самую малую, единицу декомпозиции? Ок, тогда расскажи, как будешь реагировать на ESC пользователя, откатывая рабочий цикл с сотней объектов на стеке. Среди которых объект интерфейса по UART, имеющий ещё три объекта-нитки приёма-передачи, объект-логгер, связанный ещё с двумя объектами-журналами в файл и консоль, и восемь десятков – приблизительно, хрен их там знает, сколько понадобится – OLE-проксей к внешним приложениям Оффиса, представляющим документы, параграфы, списки, стили, таблицы, книги, листы/ячейки/колонки и сами приложения, а также десяток std::коллекций с инфой оттуда и туда, а ещё сикось-накось связанной с тудой и оттудовой. Очень интересно посмотреть хотя бы на по-Дейкстровски структурные блок-схемки и формальные протоколы взаимодействия отдельных компонент, а уж как это будет реализовано без нелокального управления потоком исполнения я, так и быть, сам попытаюсь представить. Потом сходим в холивар по goto, где я ничего нового уже не напишу.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810169</guid>
        <pubDate>Wed, 11 Sep 2019 20:16:29 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810169</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810167'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T19:39:16+00:00">11.09.19, 19:39</time></span><div class='quote '>OpenGL, наверное можно было не прямые цитаты давать, а отвечать на посты Кили его же постами </div></div><br>
Я бы так и сделал, если бы нашёл ту тему вовремя :)]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810167</guid>
        <pubDate>Wed, 11 Sep 2019 19:39:16 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810167</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>OpenGL</strong>, наверное можно было не прямые цитаты давать, а отвечать на посты Кили его же постами :)<br>
<br>
Но вообще если серьезно, то времени не так и мало прошло, человек мог поменять мнение.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810166</guid>
        <pubDate>Wed, 11 Sep 2019 19:33:45 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810166</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810150'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T17:45:03+00:00">11.09.19, 17:45</time></span><div class='quote '>С чего конкретно?</div></div>Просто ты тогда спорил с аргументами в точности совпадающими с теми, которые приводишь сейчас. Это и правда смешно. :lol:]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810162</guid>
        <pubDate>Wed, 11 Sep 2019 19:21:25 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810162</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810153'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T18:14:53+00:00">11.09.19, 18:14</time></span><div class='quote '>Пиши структурные аналоги, если хочется в гамаке постоять. Никто ж не заставляет исключаться. </div></div><br>
В том то и дело - я этого никогда не пользовал. Ди и никогда к этому и не претендовал&#33; Локально - это естественно, глобально - дичь. Именно поэтому я и апеллирую к тому, что &quot;Локальную размотку он делает, а вот глобальную прощёлкивает&quot; - есть левое утверждение. Которое ваще без берегов. И его нужно рассчтрелять.]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810153</guid>
        <pubDate>Wed, 11 Sep 2019 18:14:53 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810153</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810141'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T16:04:26+00:00">11.09.19, 16:04</time></span><div class='quote '>Парни, вы уж меня извините за тупизну - но &quot;разматывание&quot; длинных переходов я отношу (лично я) к лютоой дичи</div></div>Пиши структурные аналоги, если хочется в гамаке постоять. Никто ж не заставляет исключаться.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810151</guid>
        <pubDate>Wed, 11 Sep 2019 17:50:28 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810151</link>
        <description><![CDATA[OpenGL: Киля, расслабься. Если ты не видишь ничего смешного - сочувствую, поскольку объяснять я ничего не намерен  :D]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810150</guid>
        <pubDate>Wed, 11 Sep 2019 17:45:03 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810150</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810149'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T17:44:05+00:00">11.09.19, 17:44</time></span><div class='quote '>Просто поржать. Ты возражаешь? </div></div><br>
С чего конкретно?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810149</guid>
        <pubDate>Wed, 11 Sep 2019 17:44:05 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810149</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810147'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T17:39:34+00:00">11.09.19, 17:39</time></span><div class='quote '>Ну а к чему ты тогда привел то, что выше? </div></div><br>
Просто поржать. Ты возражаешь?  :D]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810147</guid>
        <pubDate>Wed, 11 Sep 2019 17:39:34 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810147</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810146'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T17:37:37+00:00">11.09.19, 17:37</time></span><div class='quote '>Разве я написал, что ты за/против исключений? </div></div><br>
Ну а к чему ты тогда привел то, что выше? Очевидно же, что там спор о &quot;коды возврата vs исключения&quot;. Как понимать твой смищной смайл? Смех без причины, признак сам знаешь чего?  :rolleyes:]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810146</guid>
        <pubDate>Wed, 11 Sep 2019 17:37:37 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810146</link>
        <description><![CDATA[OpenGL: Разве я написал, что ты за/против исключений?  :D]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810143</guid>
        <pubDate>Wed, 11 Sep 2019 16:34:43 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810143</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3810098'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-11T14:22:33+00:00">11.09.19, 14:22</time></span><div class='quote '>Ха. Три раза. Просматриваю срач define vs template, на который сослался недавно Qraizer. Зацените :D<br>
</div></div><br>
В очередной раз убеждаюсь в твоем неумении читать посты  :lol:  Я ж тут в этой теме нигде не топил ни за исключения, ни за коды возвратов. Я об этом даже прямо писал&#33;&#33;&#33; А доколебался я,  до твоей фразы, в которой ты написал, что то типа: &quot;запомнить какие исключения кидает функция, не сложнее, чем проверить код возврата&quot;. Которое ИМХО, в корне не верно. И даже предложил тебе перечислить какие исключения кидает некая функция, которую ты в первый раз видишь глазами. А ты в очередной раз признал что не читаешь и перекручиваешь смысл обсуждения так, как тебе хочется. Причем я тебе об этом писал неоднократно.  :whistle:]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810141</guid>
        <pubDate>Wed, 11 Sep 2019 16:04:26 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810141</link>
        <description><![CDATA[JoeUser: Парни, вы уж меня извините за тупизну - но &quot;разматывание&quot; длинных переходов я отношу (лично я) к лютоой дичи<br>В том числе к криминальной.]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810098</guid>
        <pubDate>Wed, 11 Sep 2019 14:22:33 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810098</link>
        <description><![CDATA[OpenGL: Ха. Три раза. Просматриваю срач <a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=412112&st=0' target='_blank'>define vs template</a>,  на который сослался недавно <strong class='tag-b'>Qraizer</strong>. Зацените :D<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3759480'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Fester &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T08:16:37+00:00">07.02.18, 08:16</time></span><div class='quote '>(да блин, даже сейчас коллеги все еще боятся использовать исключения&#33; и стараются вернуть код ошибки хотя пишут уже исключительно на C#</div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3759487'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T08:43:34+00:00">07.02.18, 08:43</time></span><div class='quote '>А чего бояться? Боятся что исключение их укусит? Или они просто матерые сишники, которые по привычке в придачу пишут все в одном классе, не используют наследование, и все методы у них статические, и то&#33; Только из за того, что в C# нельзя написать функцию вне класса? Может им на пенсию пора? </div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3759493'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Fester &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T09:28:02+00:00">07.02.18, 09:28</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=380454&view=findpost&p=3759506'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T10:42:25+00:00">07.02.18, 10:42</time></span><div class='quote '>А это что плохо? Если у тебя произошло исключение - это значит код, который его кинул - не смог справится с ошибкой. Коды возврата тебе тут не помогут. Если ты боишься что где то не обработаешь исключение, то почему ты не боишься того, что где то ты не проверишь возвращаемое значение? И все равно это приведет к крэшу, и хорошо - если к крэшу, так хоть упало - и сразу все понятно. А если будет не крэшь а произойдет операция - которая в принципе не должна произойти? По моему это хуже крэша. ... С кодами возврата можно отгребсти куда больше проблем. И таких ошибок, что catch(...) тебе сказкой покажется. Там хоть бряк можно поставить, и сразу туда вылететь в этот catch.</div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3759519'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T12:06:43+00:00">07.02.18, 12:06</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3759511'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Fester &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T11:35:57+00:00">07.02.18, 11:35</time></span><div class='quote '>Крэш - это полный отказ, в то время как какая-то незавершенная или неправильная операция совсем не означает, что приложение больше неработоспособно.</div></div>Это плохо, но не смертельно. А вот когда у тебя программа работает с некорректными данными, а ты еще об этом даже не догадываешься - вот тут будет полнейшая жопа. Ты просто можешь реально влететь в такую жопу. Что потом забудешь return, и будешь вместо него везде писать throw.</div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3759519'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T12:06:43+00:00">07.02.18, 12:06</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3759511'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Fester &#064; <time class="tag-quote__quoted-time" datetime="2018-02-07T11:35:57+00:00">07.02.18, 11:35</time></span><div class='quote '>потому что исключение может прилететь откуда угодно, а все возвращаемые значения заранее известны.</div></div>Блин, я не понимаю как вы программируете? Ты юзаешь функцию и незнаешь - кидает она тебе исключение или нет? или что? Да откуда бы оно не прилетело - ты можешь открыть дамп и посмотреть стек, и сразу понять - что и в каком месте у тебя вылетело.</div></div><br>
 :lool:]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810086</guid>
        <pubDate>Wed, 11 Sep 2019 12:37:47 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3810086</link>
        <description><![CDATA[Qraizer: Стандарт не гарантирует. И мне всегда было жаль этго. Впрочем, объяснение, почему так, на поверхности. &lt;setjmp&gt; является интерфейсом из RTL языка C, поэтому к нему нет и быть не может никаких требований учитывать что-то там, не относящееся к C. Формально libc.a может просто браться и линковаться c программой C++, иначе всю библиотеку C пришлось бы переописывать в Стандарте Плюсов, из-за чего фактически одна сущность существовала бы в двух ипостасях, да ещё и по-разному реализованной. И по большому счёту тогда уж надо было бы отрефакторить многие функции. Главным образом небезопасные к многопоточности и безопасности.<br>Но WinAPI не только обещает, что всё должно разматываться по-честному, тут просто нет выбора. SEH ответственна за любую размотку стека вызовов, это механизм ОСи, а не языка, так что longjmp() обязан выполняться через GlobalUnwind(). И так как C++EH строиться на базе SEH, то в Плюсах пришлось бы прилагать усилия, чтобы longjmp() работал иначе, нежели со всеми гарантиями.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809954</guid>
        <pubDate>Tue, 10 Sep 2019 14:43:27 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809954</link>
        <description><![CDATA[JoeUser: Не ошибаешься.]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809952</guid>
        <pubDate>Tue, 10 Sep 2019 14:30:03 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809952</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-10T14:23:20+00:00">10.09.19, 14:23</time></span><div class='quote '>__attribute__(cleanup) не всесилен. Локальную размотку он делает, а вот глобальную прощёлкивает</div></div><br>
Насколько я помню, деструкторы тоже при longjmp тебе никто не обещает вызвать. Или я ошибаюсь?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809950</guid>
        <pubDate>Tue, 10 Sep 2019 14:24:44 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809950</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809948'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-10T14:23:20+00:00">10.09.19, 14:23</time></span><div class='quote '>но кому оно такое надо в Плюсах</div></div><br>
Конечно.]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809948</guid>
        <pubDate>Tue, 10 Sep 2019 14:23:20 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809948</link>
        <description><![CDATA[Qraizer: __attribute__(cleanup) не всесилен. Локальную размотку он делает, а вот глобальную прощёлкивает. Правда, в режиме C++ не прощёлкивает исключения, но кому оно такое надо в Плюсах? Там своё есть, языковое.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809944</guid>
        <pubDate>Tue, 10 Sep 2019 13:53:37 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809944</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>Wound</strong>, все решается документацией и качеством оформления кода, если либа не для себя, а в команду или паблик. Если есть гарантии, что исключений не будет - не нужно конечно. А если знаешь, что исключения могут быть, будь добр - не забывай. А то так договоримся, что ты забудешь, что делить на ноль нельзя, но обвинишь разработчика либы, которую пользуешь.<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">ЗЫ: Да и для себя лучше не лениться, и делать все что нужно</div></div>]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809943</guid>
        <pubDate>Tue, 10 Sep 2019 13:52:18 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809943</link>
        <description><![CDATA[Qraizer: Ну да. Если я соблюдаю свой контракт, это не означает, что я отвечаю за чужие. Но вот что однозначно верно в случае SEH – мои контракты порушить никто не способен. Я их буду выполнять всегда, каким бы злым не был окружающий меня код.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809934</guid>
        <pubDate>Tue, 10 Sep 2019 13:04:06 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809934</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-10T12:56:03+00:00">10.09.19, 12:56</time></span><div class='quote '>Зачем он мне там? Я не хочу заниматься не своим делом.</div></div><br>
Ну так я и говорю, допустим кто то вызовет твою функцию, в своей функции, но перед вызовом выделит ресурсы, и забудет обернуть в __try/__finally - в итоге будет утечка ? Т.е. при таком подходе придется тело каждой функции, где есть выделение ресурсов оборачивать в __try/__finally ?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809932</guid>
        <pubDate>Tue, 10 Sep 2019 12:56:03 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809932</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809927'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-10T12:49:53+00:00">10.09.19, 12:49</time></span><div class='quote '>Так подожди, в твоем коде нет __catch, если я не забыл, он там должен быть для обработки исключения.</div></div>Зачем он мне там? Я не хочу заниматься не своим делом.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809927</guid>
        <pubDate>Tue, 10 Sep 2019 12:49:53 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809927</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809913'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-10T11:29:26+00:00">10.09.19, 11:29</time></span><div class='quote '>Нелокальностью. Ты не сделаешь goto далеко наружу, но можешь longjmp(). Локально же ты можешь сделать не только goto, но ещё и return, break и continue.</div></div><br>
Так подожди, в твоем коде нет __catch, если я не забыл, он там должен быть для обработки исключения. Соответственно если в функции выше нет этого __catch, значит в ней будет утечка, если ресурсы выделились? Или ты хочешь сказать что предется все функции оборачивать в __try/__finaly?<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809913'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-10T11:29:26+00:00">10.09.19, 11:29</time></span><div class='quote '>Я разве не говорил, что на WinAPI легко писать отказоустойчивый код, а на POSIX это в принципе невозможно? И всё потому, что SEH не языковой механизм.</div></div><br>
ну не помню, может быть в той статье про SEH ты что то упоминал. :-?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809925</guid>
        <pubDate>Tue, 10 Sep 2019 12:38:05 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809925</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809913'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-10T11:29:26+00:00">10.09.19, 11:29</time></span><div class='quote '>на WinAPI легко писать отказоустойчивый код, а на POSIX это в принципе невозможно?</div></div><br>
:crazy:]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809913</guid>
        <pubDate>Tue, 10 Sep 2019 11:29:26 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809913</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T20:35:26+00:00">09.09.19, 20:35</time></span><div class='quote '>Ну так а чем это отличается от goto cleanup: ?</div></div>Нелокальностью. Ты не сделаешь goto далеко наружу, но можешь longjmp(). Локально же ты можешь сделать не только goto, но ещё и return, break и continue.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T20:35:26+00:00">09.09.19, 20:35</time></span><div class='quote '>Разве что goto писать не нужно, но __try нужно, и __finally не забыть, и не забыть очистить все ресурсы.</div></div>Патерн в той теме, что ты приводил как пример из MSDN, как раз для условий отсутствия SEH, там какой-нибудь goto cleanup вполне себе нормально. Но опять же локально, и как ты говоришь, нужно не забыть везде так прописать. Забыл и влепил return, усё, приехали. И фактически он реализует лишь break, что-либо другое реализовать на нём можно, но всё сразу... И проблема с нелокальностью всё равно остаётся, longjmp()-у коллинеарно на твои goto внутри снимаемых с исполнения функций.<br>
Не забыть – естественно. Ну так на то это и <span class='tag-u'>Structural</span> Exteption Handling. RAII на классах делает это гораздо удобнее, уже не забудешь. Та и на кодах ошибки же всё равно тоже надо не забывать прописывать очистки. <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T20:35:26+00:00">09.09.19, 20:35</time></span><div class='quote '>Плюс ко всему если ты пишешь кросплатформенный код, то такой трюк уже не прокатит, либо придется писать еще и макросы в придачу.</div></div>Я разве не говорил, что на WinAPI легко писать отказоустойчивый код, а на POSIX это в принципе невозможно? И всё потому, что SEH не языковой механизм.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809837</guid>
        <pubDate>Mon, 09 Sep 2019 23:20:06 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809837</link>
        <description><![CDATA[JoeUser: <a class='tag-url' href='http://ideone.com/hGvMUb' target='_blank'>Фенечка для GCC:</a><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;stdio.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">/* Demo code showing the usage of the cleanup variable</div><div class="code_line">&nbsp;&nbsp; attribute. See:http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html</div><div class="code_line">*/</div><div class="code_line">&nbsp;</div><div class="code_line">/* cleanup function</div><div class="code_line">&nbsp;&nbsp; the argument is a int * to accept the address</div><div class="code_line">&nbsp;&nbsp; to the final value</div><div class="code_line">*/</div><div class="code_line">&nbsp;</div><div class="code_line">void clean_up(int *final_value)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;printf(&quot;Cleaning up\n&quot;);</div><div class="code_line">&nbsp;&nbsp;printf(&quot;Final value: %d\n&quot;,*final_value);</div><div class="code_line">&nbsp;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char **argv)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;/* declare cleanup attribute along with initiliazation</div><div class="code_line">&nbsp;&nbsp; &nbsp; Without the cleanup attribute, this is equivalent </div><div class="code_line">&nbsp;&nbsp; &nbsp; to:</div><div class="code_line">&nbsp;&nbsp; &nbsp; int avar = 1;</div><div class="code_line">&nbsp;&nbsp;*/</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;int avar __attribute__ ((__cleanup__(clean_up))) = 1;</div><div class="code_line">&nbsp;&nbsp;avar = 5;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>JoeUser</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809830</guid>
        <pubDate>Mon, 09 Sep 2019 20:35:26 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809830</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809828'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T20:19:55+00:00">09.09.19, 20:19</time></span><div class='quote '>В SEH нет. </div></div><br>
Ну так а чем это отличается от goto cleanup: ? Разве что goto писать не нужно, но __try нужно, и __finally не забыть, и не забыть очистить все ресурсы. Плюс ко всему если ты пишешь кросплатформенный код, то такой трюк уже не прокатит, либо придется писать еще и макросы в придачу.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809828</guid>
        <pubDate>Mon, 09 Sep 2019 20:19:55 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809828</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809794'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:22:31+00:00">09.09.19, 19:22</time></span><div class='quote '>Вот Qraizer там про SEH писал и что исключения очень хорошо ложатся в модель Си. Но лично я не понимаю как они туда ложаться. Ведь в том же Си нет ни конструкторов, ни деструкторов. При генерировании исключения, которое проглядели - утечка гарантирована ИМХО.</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="2019-09-09T20:24:18+00:00">09.09.19, 20:24</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809821'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:54:57+00:00">09.09.19, 19:54</time></span><div class='quote '>RAII хороший в С++, в Сях все равно это преврящается в ручной вызов функции очистки.</div></div>В 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="2019-09-09T20:30:09+00:00">09.09.19, 20:30</time></span></span><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 doSomething(void)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;void *buf = NULL;</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;</div><div class="code_line">/* blah-blah-blah */</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;doEvilFunc_thatRaises_EXCEPTION_INT_DIVIDE_BY_ZERO();</div><div class="code_line">&nbsp;</div><div class="code_line">/* blah-blah-blah */</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 (buf != NULL) free(buf);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809826</guid>
        <pubDate>Mon, 09 Sep 2019 20:11:33 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809826</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809824'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T20:06:03+00:00">09.09.19, 20:06</time></span><div class='quote '>О каких языках речь?</div></div>Я непосредственно работаю в elixir, аналогичное можно замутить в Nim и Crystal. в Rust, вроде тоже есть что-то для этого, то ли макро, то ли что-то встроенное в сам язык.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809824</guid>
        <pubDate>Mon, 09 Sep 2019 20:06:03 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809824</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809822'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T20:00:29+00:00">09.09.19, 20:00</time></span><div class='quote '>На практике я заметил, что в языках с поддержкой нормальных макро, использовать возврат ошибок не сложнее и не легче, чем исключения.</div></div><br>
О каких языках речь?]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809822</guid>
        <pubDate>Mon, 09 Sep 2019 20:00:29 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809822</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809819'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:54:12+00:00">09.09.19, 19:54</time></span><div class='quote '>Ну если там int&#39;ы возвращаются, или какие нибудь char&#39;ы, строки, то тут конечно без доков ниче не поймешь. В COM&#39;ах всяких наприме всякие HRESULT&#39;ы возвращаются, этих там кодов овер дофига, а каждая функция, естественно не все возвращает, и приходится тоже лезть в доку. Если бы там как то разграничить эти коды, возможно было бы проще.</div></div>Вот именно. На практике я заметил, что в языках с поддержкой нормальных макро, использовать возврат ошибок не сложнее и не легче, чем исключения. Это скорее вопрос вкуса/религии или традиций самого языка.<br>
В языках вроде плюсов, D, JavaScript исключения однозначно удобнее, так как проброску возвращаемых ошибок придется делать вручную или уродливым препроцессором или строковым миксином (для D). Тем более, что в D и JavaScript ещё и стектрейс есть. <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="2019-09-09T20:05:44+00:00">09.09.19, 20:05</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809821'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:54:57+00:00">09.09.19, 19:54</time></span><div class='quote '>Сях все равно это преврящается в ручной вызов функции очистки. Я то говорил в контексте Си, а не С++.</div></div>Для сей вся дискуссия бессмысленна. В сях нет исключений. SEH это чисто виндовая фигня не имеющая к стандартным сям никакого отношения.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809821</guid>
        <pubDate>Mon, 09 Sep 2019 19:54:57 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809821</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:50:24+00:00">09.09.19, 19:50</time></span><div class='quote '>Я не вижу в своих постах оскорблений. Считаешь, что я не прав - обращайся к суперам/админам, а не ко мне. </div></div><br>
Ну я ж говорил что слепой.  :lol: <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="2019-09-09T19:57:25+00:00">09.09.19, 19:57</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:54:33+00:00">09.09.19, 19:54</time></span><div class='quote '>Я написал потенциальной утечкой. Если ты задумал вручную чистить ресурсы, то можно и с исключениями обойтись без. RAII, чисти все в catch или если есть finally то в нем, в D можно чистить в scope(exit). RAII это всего лишь способ избежать ручной чистки, применять его удобно и для исключений и для ранних return&#39;ов. </div></div><br>
RAII хороший в С++, в Сях все равно это преврящается в ручной вызов функции очистки. Я то говорил в контексте Си, а не С++.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809820</guid>
        <pubDate>Mon, 09 Sep 2019 19:54:33 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809820</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809816'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:46:22+00:00">09.09.19, 19:46</time></span><div class='quote '>Почему с утечкой? Перед возвратом, можно очистить все выделенные до этого ресурсы. Например, на сколько я заметил, по примерам в MSDN, майкрософт применяется подход с метками.</div></div>Я написал потенциальной утечкой. Если ты задумал вручную чистить ресурсы, то можно и с исключениями обойтись без. RAII, чисти все в catch или если есть finally то в нем, в D можно чистить в scope(exit). RAII это всего лишь способ избежать ручной чистки, применять его удобно и для исключений и для ранних return&#39;ов.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809819</guid>
        <pubDate>Mon, 09 Sep 2019 19:54:12 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809819</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809817'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:50:06+00:00">09.09.19, 19:50</time></span><div class='quote '>С кодами тоже ничего очевидного. Я вот пишу на elixir, где вообще все повально на возвращаемых ошибках. Так вот без доков все равно ничего не поймёшь. </div></div><br>
Ну если там int&#39;ы возвращаются, или какие нибудь char&#39;ы, строки, то тут конечно без доков ниче не поймешь. В COM&#39;ах всяких наприме всякие HRESULT&#39;ы возвращаются, этих там кодов овер дофига, а каждая функция, естественно не все возвращает, и приходится тоже лезть в доку. Если бы там как то разграничить эти коды, возможно было бы проще.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809818</guid>
        <pubDate>Mon, 09 Sep 2019 19:50:24 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809818</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809816'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:46:22+00:00">09.09.19, 19:46</time></span><div class='quote '>Ты оскорбляешь, а мне нельзя?</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="2019-09-09T19:51:15+00:00">09.09.19, 19:51</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:38:04+00:00">09.09.19, 19:38</time></span><div class='quote '>Хотя,ЕМНИП в Java нужно явно перечислять все виды исключений, которые может бросить функция. Поправьте, если я ошибаюсь.</div></div><br>
От этого подхода отказались уже - решили, что он неудобен.]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809817</guid>
        <pubDate>Mon, 09 Sep 2019 19:50:06 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809817</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:42:27+00:00">09.09.19, 19:42</time></span><div class='quote '>Но с исключениями не все так очевидно выходит. Если бы IDE выявляла все исключения, которые функция может кинуть и показывала их. Тогда бы тут у кодов возврата шансов не было бы совсем.</div></div>С кодами тоже ничего очевидного. Я вот пишу на elixir, где вообще все повально на возвращаемых ошибках. Так вот без доков все равно ничего не поймёшь.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809816</guid>
        <pubDate>Mon, 09 Sep 2019 19:46:22 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809816</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:42:02+00:00">09.09.19, 19:42</time></span><div class='quote '>Если ты собрался пробросить ошибку наверх в вызывающем коде, то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой. </div></div><br>
Почему с утечкой? Перед возвратом, можно очистить все выделенные до этого ресурсы. Например, на сколько я заметил, по примерам в MSDN, майкрософт применяется подход с метками. Аля goto cleanup:<br>
Где идет очистка всех ресурсов и возврат. Правда я не фанат такого подхода. Но на Си я мало писал, в основном там где я писал, фильтры под apache, там были подобия cleanup&#39;ов, котрые выше привел D_KEY. <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="2019-09-09T19:46:54+00:00">09.09.19, 19:46</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809814'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:43:33+00:00">09.09.19, 19:43</time></span><div class='quote '>Киля, не бомби. Я, конечно, добрый, но тут есть и другие модеры.</div></div><br>
Ты себя еще отмодерируй рыбка. Ты оскорбляешь, а мне нельзя?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809815</guid>
        <pubDate>Mon, 09 Sep 2019 19:45:39 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809815</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:42:02+00:00">09.09.19, 19:42</time></span><div class='quote '>то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой.</div></div><br>
Или goto cleanup... а, не, Киля категорически против goto, так что лучше не напоминать  :lol:]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809813</guid>
        <pubDate>Mon, 09 Sep 2019 19:42:27 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809813</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809808'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:36:34+00:00">09.09.19, 19:36</time></span><div class='quote '>На базе этого делают такого рода хрень даже: libcsptr<br>
Но я не юзал. </div></div><br>
А, ну это я встречал, даже юзал. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:38:04+00:00">09.09.19, 19:38</time></span><div class='quote '>Ну если развить эту тему, то современные IDE при наведении мыши краткий кусок из доков выводят, где написано, что именно кидает функция, ну и доки ща модно прямо в комментах писать, так что go to declaration. и читай на здоровье. </div></div><br>
Но с исключениями не все так очевидно выходит. Если бы IDE выявляла все исключения, которые функция может кинуть и показывала их. Тогда бы тут у кодов возврата шансов не было бы совсем.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809812</guid>
        <pubDate>Mon, 09 Sep 2019 19:42:02 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809812</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809809'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:37:33+00:00">09.09.19, 19:37</time></span><div class='quote '>Ранний return это такой же return как и поздний, разницы абсолютно никакой, для вызывающего кода. </div></div>Если ты собрался пробросить ошибку наверх в вызывающем коде, то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809810</guid>
        <pubDate>Mon, 09 Sep 2019 19:38:04 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809810</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809805'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:34:17+00:00">09.09.19, 19:34</time></span><div class='quote '>Ну если ты в блокноте код набираешь, то да, придется. А если в более менее какой то IDE, хотя бы 2000 года выпуска, то они как правило сами подсвечивают такие вещи. В самом худшем случае можно сочетание клавишь нажать &quot;Go to declaration&quot; и посмотреть. </div></div>Ну если развить эту тему, то современные IDE при наведении мыши краткий кусок из доков выводят, где написано, что именно кидает функция, ну и доки ща модно прямо в комментах писать, так что go to declaration. и читай на здоровье.<br>
Но это все лирика, а факт в том, что сигнатуры в любом случае недостаточно. Хотя,ЕМНИП в Java нужно явно перечислять все виды исключений, которые может бросить функция. Поправьте, если я ошибаюсь.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809809</guid>
        <pubDate>Mon, 09 Sep 2019 19:37:33 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809809</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809803'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:33:30+00:00">09.09.19, 19:33</time></span><div class='quote '>При возврате ошибок придется городить точно такое же RAII, ранний return по сути ничем не отличается от throw. </div></div><br>
Ранний return это такой же return как и поздний, разницы абсолютно никакой, для вызывающего кода.  :-?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809808</guid>
        <pubDate>Mon, 09 Sep 2019 19:36:34 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809808</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809800'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:30:27+00:00">09.09.19, 19:30</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809797'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:28:44+00:00">09.09.19, 19:28</time></span><div class='quote '>Это стоит делать и без исключений. </div></div><br>
Можешь показать как в Си это сделать? Там как раз нет исключений, мне бы пригодилось.</div></div><br>
Ну ничего, кроме attribute cleanup и накрученных поверх него макросов, я тебе посоветовать не могу.<br>
<br>
На базе этого делают такого рода хрень даже: <a class='tag-url' href='https://github.com/Snaipe/libcsptr/blob/master/README.md' target='_blank'>libcsptr</a><br>
Но я не юзал.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809807</guid>
        <pubDate>Mon, 09 Sep 2019 19:35:46 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809807</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:16:58+00:00">09.09.19, 19:16</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=380454&view=findpost&p=3809792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:16:58+00:00">09.09.19, 19:16</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=380454&view=findpost&p=3809792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:16:58+00:00">09.09.19, 19:16</time></span><div class='quote '>Ну вот я тебе привел выше пример, когда забивание на bad_alloc, приведет к по сути багу. </div></div><br>
С чего бы? Если у тебя в этом сценарии выпал bad_alloc, то это как раз тот случай, когда в js ты совершенно точно не вернёшь ничего. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809793'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:22:09+00:00">09.09.19, 19:22</time></span><div class='quote '>Но как видим, Киля типа подразумевал под этим что-то другое.</div></div><br>
Подозреваю, что он просто сел в лужу и сейчас изо всех сил делает вид, что это не так. Даже интересно, какой ещё выверт родить сумеет  :D]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809806</guid>
        <pubDate>Mon, 09 Sep 2019 19:34:48 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809806</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809802'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:32:40+00:00">09.09.19, 19:32</time></span><div class='quote '>Я не понял вопроса, он какой то глупый.  Приведи вариант функции GetLastError Только с исключениями, вместо возврата? Я не понимаю зачем это вообще нужно, и как это будет выглядеть? Ты сравнивать колбасу и палец ИМХО.</div></div>Это ты сравнил, не я:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809794'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:22:31+00:00">09.09.19, 19:22</time></span><div class='quote '>Это было к тому, что понять какую ошибку/неошибку/код возврата может генерировать функция/класс, проще визуально наблюдать глазами, чем какие исключения функция может генерить.</div></div>]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809805</guid>
        <pubDate>Mon, 09 Sep 2019 19:34:17 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809805</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809801'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:31:23+00:00">09.09.19, 19:31</time></span><div class='quote '>Чем проще, ведь хз что там в этом SomeStatus, все равно придется лезть в доку. </div></div><br>
Ну если ты в блокноте код набираешь, то да, придется. А если в более менее какой то IDE, хотя бы 2000 года выпуска, то они как правило сами подсвечивают такие вещи. В самом худшем случае можно сочетание клавишь нажать &quot;Go to declaration&quot; и посмотреть.  :-?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809803</guid>
        <pubDate>Mon, 09 Sep 2019 19:33:30 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809803</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809794'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:22:31+00:00">09.09.19, 19:22</time></span><div class='quote '>Под исключения же придется все оборачивать в RAII, в том же С++, чтоб избежать утечку ресурса.</div></div>При возврате ошибок придется городить точно такое же RAII, ранний return по сути ничем не отличается от throw.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809802</guid>
        <pubDate>Mon, 09 Sep 2019 19:32:40 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809802</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809799'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:29:27+00:00">09.09.19, 19:29</time></span><div class='quote '>Приведи вариант функции is_open() только с исключениями вместо возврата. Дабы можно было прямо вот на конкретном примере сравнить два варианта.<br>
</div></div><br>
Я не понял вопроса, он какой то глупый.  :-?  Приведи вариант функции GetLastError Только с исключениями, вместо возврата? Я не понимаю зачем это вообще нужно, и как это будет выглядеть? Ты сравнивать колбасу и палец ИМХО.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809801</guid>
        <pubDate>Mon, 09 Sep 2019 19:31:23 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809801</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809798'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:29:09+00:00">09.09.19, 19:29</time></span><div class='quote '>Тогда твоя функция будет выглядеть как:<br>
SomeStatus doSomething()<br>
И уже будет проще понять какие ошибки функция может возвратить.</div></div>Чем проще, ведь хз что там в этом SomeStatus, все равно придется лезть в доку.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809800</guid>
        <pubDate>Mon, 09 Sep 2019 19:30:27 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809800</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809797'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:28:44+00:00">09.09.19, 19:28</time></span><div class='quote '>Это стоит делать и без исключений. </div></div><br>
Можешь показать как в Си это сделать? Там как раз нет исключений, мне бы пригодилось.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809799</guid>
        <pubDate>Mon, 09 Sep 2019 19:29:27 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809799</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809794'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:22:31+00:00">09.09.19, 19:22</time></span><div class='quote '>Это было к тому, что понять какую ошибку/неошибку/код возврата может генерировать функция/класс, проще визуально наблюдать глазами, чем какие исключения функция может генерить.</div></div>Приведи вариант функции is_open()  только с исключениями вместо возврата. Дабы можно было прямо вот на конкретном примере сравнить два варианта.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809798</guid>
        <pubDate>Mon, 09 Sep 2019 19:29:09 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809798</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809796'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:26:37+00:00">09.09.19, 19:26</time></span><div class='quote '>В любом случае сигнатура никак не поможет запомнить код ошибки. Например. мы знаем (из доков), что функция int doSomething() возвращает код ошибки. Как нам по сигнатура понять какие именно ошибки может вернуть функция? </div></div><br>
Ну это из той же серии, что и про исключения, но без RAII. Что тебе например мешает завести enum ? <br>
Тогда твоя функция будет выглядеть как:<br>
SomeStatus doSomething()<br>
И уже будет проще понять какие ошибки функция может возвратить.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809797</guid>
        <pubDate>Mon, 09 Sep 2019 19:28:44 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809797</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809794'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:22:31+00:00">09.09.19, 19:22</time></span><div class='quote '>Под исключения же придется все оборачивать в RAII, в том же С++, чтоб избежать утечку ресурса.</div></div><br>
Это стоит делать и без исключений.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809796</guid>
        <pubDate>Mon, 09 Sep 2019 19:26:37 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809796</link>
        <description><![CDATA[applegame: В любом случае сигнатура никак не поможет запомнить код ошибки. Например. мы знаем (из доков), что функция int doSomething() возвращает код ошибки. Как нам по сигнатура понять какие именно ошибки может вернуть функция?]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809794</guid>
        <pubDate>Mon, 09 Sep 2019 19:22:31 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809794</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809791'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:15:24+00:00">09.09.19, 19:15</time></span><div class='quote '>Тогда не понятно для чего ты привел этот пример. Вроде речь шла о сравнении с исключениями, а исключения - это ошибка в контексте функции, а не класса. </div></div><br>
Это было к тому, что понять какую ошибку/неошибку/код возврата может генерировать функция/класс, проще визуально наблюдать глазами, чем какие исключения функция может генерить. Потому что те же коды возврата можно структурировать. Под исключения же придется все оборачивать в RAII, в том же С++, чтоб избежать утечку ресурса.<br>
Вот Qraizer там про SEH писал и что исключения очень хорошо ложатся в модель Си. Но лично я не понимаю как они туда ложаться. Ведь в том же Си нет ни конструкторов, ни деструкторов. При генерировании исключения, которое проглядели - утечка гарантирована ИМХО.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809793</guid>
        <pubDate>Mon, 09 Sep 2019 19:22:09 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809793</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809786'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:04:40+00:00">09.09.19, 19:04</time></span><div class='quote '>Лично я под &quot;код возврата&quot; всегда понимал сигнализирование об ошибке путём возвращаемого значения.</div></div>Ну лично я, тоже так понял. Но как видим, Киля типа подразумевал под этим что-то другое.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809792</guid>
        <pubDate>Mon, 09 Sep 2019 19:16:58 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809792</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809789'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:11:24+00:00">09.09.19, 19:11</time></span><div class='quote '>Опять враньё. Вообще-то конкретика была.</div></div><br>
Вранье пока что с твоей стороны. Какую ты конкретику приводил? Покажи где? Я тебе привел функцию, попросил тебя, чтоб ты рассказал как мне запомнить и понять какие исключения она генерит, если у меня нет ее реализации. Ты отмазался общими словами, потом съехал на RAII, На который я просил тебя не съезжать, и начал объяснять мне зачем то, как ты круто юзаешь RAII.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809789'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:11:24+00:00">09.09.19, 19:11</time></span><div class='quote '> Я даже примеры приводил, когда один и тот же bad_alloc в разных контекстах может быть как ожидаемым (и значит его вполне можно поймать и обработать), так и неожиданным (и тогда на него просто в данный момент забиваем). </div></div><br>
Ну вот я тебе привел выше пример, когда забивание на bad_alloc, приведет к по сути багу. Или ты мне хотел открыть америку, что исключения можно наверх прокидывать? Вопрос был про другое. Но теперь уже ты на столько извратил контекст спора, что сейчас по сути идет спор ни о чем.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809791</guid>
        <pubDate>Mon, 09 Sep 2019 19:15:24 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809791</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809787'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:05:02+00:00">09.09.19, 19:05</time></span><div class='quote '>Имелось ввиду ошибка открытия файла. А не ошибка которую сама функция возвращает. Т.е. другими словами ошибка не в контексте функции, а в контексте класса.</div></div><br>
Тогда не понятно для чего ты привел этот пример. Вроде речь шла о сравнении с исключениями, а исключения - это ошибка в контексте функции, а не класса.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809790</guid>
        <pubDate>Mon, 09 Sep 2019 19:12:55 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809790</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809770'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:50:12+00:00">09.09.19, 18:50</time></span><div class='quote '>Обсуждали два способа: возврат ошибки через return (ну или через out параметр) и через исключения. </div></div><br>
Так через Out параметр это уже не возврат ошибки. А если возврат ошибки, тогда точно такой же возврат ошибки, можно назвать и через какой нибудь левый метод/функцию. Какая разница где тебе пишется состояние ошибки?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809789</guid>
        <pubDate>Mon, 09 Sep 2019 19:11:24 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809789</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809784'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T19:00:32+00:00">09.09.19, 19:00</time></span><div class='quote '>Ты на них не ответил, твой ответ был &quot;Какие надо такие и перехватывай&quot;. Вот весь твой ответ. Никакой конкретики. </div></div><br>
Опять враньё. Вообще-то конкретика была. Я даже примеры приводил, когда один и тот же bad_alloc в разных контекстах может быть как ожидаемым (и значит его вполне можно поймать и обработать), так и неожиданным (и тогда на него просто в данный момент забиваем).]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809787</guid>
        <pubDate>Mon, 09 Sep 2019 19:05:02 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809787</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809782'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:59:14+00:00">09.09.19, 18:59</time></span><div class='quote '>Судя по изначальной цитате, таки шла речь об ошибке, а не просто &quot;коде возврата&quot;:</div></div><br>
Имелось ввиду ошибка открытия файла. А не ошибка которую сама функция возвращает. Т.е. другими словами ошибка не в контексте функции, а в контексте класса.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809786</guid>
        <pubDate>Mon, 09 Sep 2019 19:04:40 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809786</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809775'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:53:51+00:00">09.09.19, 18:53</time></span><div class='quote '>Господа, не путайте код возврата и то, что возвращает произвольная функция.</div></div><br>
Лично я под &quot;код возврата&quot; всегда понимал сигнализирование об ошибке путём возвращаемого значения. Что это на самом деле применяется только к процессам даже не в курсе был.]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809784</guid>
        <pubDate>Mon, 09 Sep 2019 19:00:32 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809784</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809770'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:50:12+00:00">09.09.19, 18:50</time></span><div class='quote '>Я ничего не путаю. Посмотри на мои сообщения, я везде пишу о возврате ошибок. Строго говоря термин &quot;код возврата&quot; применяется только к кодам возвращаемым процессом. Фактически только то, что возвращает функция main называется &quot;код возврата&quot;.</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="2019-09-09T19:04:04+00:00">09.09.19, 19:04</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809781'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:58:34+00:00">09.09.19, 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=380454&view=findpost&p=3809781'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:58:34+00:00">09.09.19, 18:58</time></span><div class='quote '>Не надо врать. Я говорил, что надо перехватывать то, что ты можешь обработать вот здесь и сейчас. В твоём сценарии ты, несмотря на ошибку, можешь вернуть в js что-то удобоваримое? Тогда это тот случай, когда его надо перехватить, только и всего. </div></div><br>
Я не вру. Я тебе задавал и наводящие вопросы и прямые. Ты на них не ответил, твой ответ был &quot;Какие надо такие и перехватывай&quot;. Вот весь твой ответ. Никакой конкретики. Когда я тебе написал что если могут вылететь какие то неявные исключения, а тебе не нужно чтоб в текущем методе возникло исключение, ты начал чесать про то, что раз они летят неявно, значит они нафиг не нужны, словятся выше. Так что сам перечитывай.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809782</guid>
        <pubDate>Mon, 09 Sep 2019 18:59:14 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809782</link>
        <description><![CDATA[applegame: Судя по изначальной цитате, таки шла речь об ошибке, а не просто &quot;коде возврата&quot;:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809675'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-08T17:54:55+00:00">08.09.19, 17:54</time></span><div class='quote '>Возьми например абстрактно посмотри на сигнатуру функции: bool is_open();<br>
Да мне ничего не нужно делать, чтоб понять <strong class='tag-b'>какие ошибки эта функция может возвратить</strong>. либо true, либо false.</div></div>]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809781</guid>
        <pubDate>Mon, 09 Sep 2019 18:58:34 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809781</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809778'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:55:01+00:00">09.09.19, 18:55</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=380454&view=findpost&p=3809778'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:55:01+00:00">09.09.19, 18:55</time></span><div class='quote '>Ты мне тут несколько страниц чесал, что тебе плевать на исключение, если ты его пропустишь</div></div><br>
Не надо врать. Я говорил, что надо перехватывать то, что ты можешь обработать вот здесь и сейчас. В твоём сценарии ты, несмотря на ошибку, можешь вернуть в js что-то удобоваримое? Тогда это тот случай, когда его надо перехватить, только и всего.]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809780</guid>
        <pubDate>Mon, 09 Sep 2019 18:58:20 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809780</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809772'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:52:25+00:00">09.09.19, 18:52</time></span><div class='quote '>Причём тут педантизм? В данном случае ты действительно не понимаешь, о чём говоришь и валишь всё в кучу. Код возврата это то, что тебе сообщает о том, что произошла ошибка при попытке выполнить операцию. nullptr, который вернул malloc - код возврата, сигнализирующий об ошибке. fopen, вернувший ненулевой указатель на FILE - код возврата, сигнализирующий об отсутствии ошибки. is_open же просто возвращает флаг, открыт файл или нет, и состояния &quot;ошибка&quot; у него в принципе нет. </div></div><br>
При том, что во первых не с тобой разговаривал. Я все в кучу не валю, раз вы распространили коды возврата на все, что может содержать ошибку, значит is_open ровно такой же код возврата. Если начать представлять буквально это термин, то код возврата - это то, что тебе возвращает функция. Соответственно Out параметр не может быть кодом возврата, потому как в него пишут, а не его возвращают. Ваш КЭП.<br>
А все остальное - твоя отсебятина.]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809779</guid>
        <pubDate>Mon, 09 Sep 2019 18:57:06 +0000</pubDate>
        <title>C vs C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=380454&amp;view=findpost&amp;p=3809779</link>
        <description><![CDATA[applegame: Присоединяюсь к вопросу, раз уж Киля настаивает, что он все правильно сделал:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=380454&view=findpost&p=3809773'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2019-09-09T18:53:01+00:00">09.09.19, 18:53</time></span><div class='quote '>Что ты хотел сказать-то своим is_open?</div></div>]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      </channel>
      </rss>
	